Легкая альтернатива readline GNU

Я ищу альтернативу readline GNU. Он поставляется с множеством функций, но только несколько из них полезны для меня, как описано ниже -

Я работаю над интерактивным приложением командной строки (отобразить приглашение и принять следующую пользовательскую команду для запуска). Я хочу реализовать некоторые функции редактирования и истории для приглашения. Поэтому, когда пользователь нажимает клавишу ВВЕРХ, он должен показывать последнюю команду запуска. Кроме того, пользователь должен иметь возможность перемещаться с помощью клавиш со стрелками, если ему нужно отредактировать опечатку или переключатели команд и т. Д.

На окнах нечто подобное уже существует, если вы используете fgets или же scanf чтобы получить ввод по приглашению cmd, он уже ведет историю, а также позволяет редактировать.

Есть ли хороший вариант, доступный на Linux?

3 ответа

Решение

Это замечательная цель, я думаю:-)

Возможно, Linenoise, libedit/editline или tecla подойдут?

Из них, вероятно, наиболее широко используется libedit - например, клиентская оболочка postgreqsql и различные утилиты BSD для Kerberos и ntp (хотя для исходных кодов это может не быть библиотекой редактирования строк по умолчанию для компиляции из-за широкого использования libreadline в Linux). Есть несколько слегка отличающихся версий libedit/editline, и вы увидите, прочитаете ли вы некоторые из этих ссылок и проведете дальнейшие исследования.

Ура и удачи в вашем проекте.

Существует replxx, лицензированная BSD альтернатива readline. Он работает в Linux, BSD, Solaris и Windows. Он поддерживает функции, которые вы ожидаете от интерактивных консольных программ, а именно:

  • редактирование строки
  • история
  • подсветка синтаксиса
  • подсказки
  • UTF-8
  • определяемые пользователем привязки клавиш (поддержка (shift/ctrl)F1 - F12)
  • многопоточная печать

Я думаю, что современной альтернативой GNU Readline является Jupyter Notebook. Идея состоит в том, что вы не создаете исполняемый файл, который ссылается на библиотеку строкового редактора. Вместо этого вы должны просто предоставить ядро, и пользователи могут выбрать свой собственный пользовательский интерфейс ноутбука, либо CUI, веб-интерфейс, либо даже IDE, например VS Code.

Другие вопросы по тегам