Как связать ясно с ^ L в Ksh - PullRequest
1 голос
/ 15 апреля 2020

Как мне воспроизвести следующие функции bash в KornShell:

bind "\C-l":"clear-screen"

Мне нужно было bind, потому что я использую set -o vi в bash и
план на использование его в k sh тоже.

Попытка использовать его в k sh выдает ошибку:

ksh: bind: not found

1 Ответ

1 голос
/ 20 апреля 2020

Извините за новости, но, как вы заметили, разница между k sh и bash: привязка или возможность определять сопоставления клавиш отсутствуют. Также не программируемое завершение команды. Исторически оболочка Korn фокусировалась на дизайне и функциях языка, а не на возможностях интерактивного терминала.

GNU bash обеспечивает привязку клавиш через библиотеку GNU Readline, которая была разработана и поддерживается одним и тем же человеком, Четом Рэйми. Насколько я знаю, ksh даже в последних версиях не использует и не предоставляет эквивалентную библиотеку.

Обходной путь - выяснить, можете ли вы запрограммировать терминал для обеспечения таких возможностей. , В tmux, если вы поместите это в файл конфигурации .tmux.conf:

bind-key C-l send-keys clear

Тогда tmux интерпретирует Control-l до того, как ksh сможет его увидеть, и расширится строкой "clear" , (Ниже я уверен, что tmux использует библиотеку GNU Readline)

Стандарт POSIX (за которым следуют k sh и bash) определяет команду "псевдоним". Однако псевдоним не определен, чтобы разрешить управляющие символы . Конкретная реализация может сделать это, но k sh нет.

См. Также https://unix.stackexchange.com/questions/82223/how-to-setup-keyboard-shortcut-that-enters-predefined-text-into-x11-xterminal-vi

...