Может ли rlwrap использовать завершение собственной команды TAB? - PullRequest
12 голосов
/ 09 февраля 2012

Я хочу использовать rlwrap с пользовательским ответом erlang.

Это прекрасно работает, если я запускаю его как "rlwrap -a myrepl".

Проблема в том, что myrepl имеет встроенную завершение табуляциикоторый попирает rlwrap.

Я хочу сделать rlwrap, чтобы отпустить клавишу TAB

Ответы [ 2 ]

21 голосов
/ 10 февраля 2012

Вы не можете одновременно использовать редактирование / историю строк rlwrap и завершение TAB вашего ответа.

rlwrap обеспечивает редактирование строки, историю и (очень простое) завершение для команд , у которых его нет . Команде, которая имеет что-то такое же причудливое, как завершение TAB, не нужно rlwrap для редактирования строки, не так ли?

Опция -a (--always-readline) является довольно грубым способом замены поведения редактирования строки rlwrap для вашей команды. Он в первую очередь предназначен для команд, которые имеют очень простой редактор строк, например, без. история команд

Если вы хотите использовать опцию -a, потому что предпочитаете rlwrap причудливость (например, постоянную историю или цветные подсказки) вашей команде (например, завершение TAB), продолжайте, но выбрать некоторые невозможно Причудливость одного и оставь другого.

Это (небольшая) цена, которую программы (и их пользователи) должны платить за отказ от библиотеки readline и лицензии GPL, которая идет с ней.

Ганс (rlwrap автор)


Изменить (апрель 2017 г.):

Во многих случаях будет возможно использовать фильтр для восстановления завершения. См. Оболочка узла на основе readline для примера этого.

1 голос
/ 13 апреля 2017

Rlwrap это мило.Но в Erlang он предлагает только постоянную историю, нарушая завершение табуляции erl.

Фундаментальная проблема в том, что erl REPL Erlang просто устарел и не соответствует обычным * nix соглашениям.Кроме того, они отказываются исправить это из-за страха случайных, ворчливых сисадминов, которые не могут принять никаких изменений.Никакое количество взломов rlwrap "клейкой ленты" не может исправить плохой REPL UX.

Было бы лучше (хотя и значительно больше работы) написать REPL с нуля, как pry / ipython / и т.д.с настраиваемым цветом, завершением табуляции, постоянной историей, поиском по страницам, наблюдателем CLI, плагинами и т. д.

Rlwrap сияет в программах с примитивными оболочками.

...