Легкая альтернатива 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.