Легкая альтернатива для чтения 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)
  • многопоточная печать