Легкая альтернатива для чтения GNU
Я ищу альтернативу для чтения GNU. Он поставляется с множеством функций, но только пара из них мне полезна, как описано ниже -
Я работаю над интерактивным приложением командной строки (выводить приглашение и принимать следующую команду пользователя для запуска). Я хочу реализовать некоторые функции редактирования и истории для подсказки. Поэтому, когда пользователь нажимает клавишу UP, он должен показывать последнюю команду запуска. Кроме того, пользователь должен иметь возможность перемещаться с помощью клавиш со стрелками, если ему нужно отредактировать любые опечатки или командные переключатели и т.д.
В окнах что-то подобное уже существует, если вы используете fgets
или scanf
для получения ввода в приглашении cmd, он уже поддерживает историю, а также позволяет редактировать.
Есть ли хороший вариант в Linux?
Ответы
Ответ 1
Это замечательная цель, я думаю:-)
Возможно Linenoise, libedit/editline или tecla будет соответствовать счету?
Из них, вероятно, наиболее широко используется libedit - например, postgreqsql и различные утилиты BSD для Kerberos и ntp
(хотя для исходных источников это может быть не стандартная библиотека редактирования строк для компиляции из-за широкого использования libreadline в Linux). Есть несколько немного разных версий libedit/editline, как вы увидите, прочитаете ли вы некоторые из этих ссылок и сделаете некоторые дополнительные исследования.
Приветствия и удачи в вашем проекте.
Ответ 2
Существует replxx, лицензированная BSD альтернатива readline.
Работает в Linux, BSD, Solaris и Windows.
Он поддерживает функции, которые вы ожидаете от интерактивных консольных программ, а именно:
- редактирование строки
- История
- Подсветка синтаксиса
- Рекомендации
- UTF-8
- пользовательские привязки клавиш (поддержка (shift/ctrl) F1 - F12)
- многопоточная печать