Как получить коды для zsh bindkey?

Из man bashв не -интерактивной оболочке оценивается BASH_ENVпеременная окружения и извлекается ее содержимое. Таким образом, вы можете использовать эту переменную среды, чтобы указать файл с настройками вашей среды.
По умолчанию в не -интерактивном режиме файлы не будут загружаться.

When bash is started non-interactively, to run a shell script, for example, it looks for the variable BASH_ENV
in  the  environment, expands its value if it appears there, and uses the expanded value as the name of a file 
to read and execute.  Bash behaves as if the following command were executed:
       if [ -n "$BASH_ENV" ]; then. "$BASH_ENV"; fi
but the value of the PATH variable is not used to search for the filename.
-1
05.01.2020, 14:58
1 ответ

Терминалы так не работают.

Терминалы не отправляют ключи-модификаторы.Модификаторы проглатываются терминалом и не передаются по сети на хост. Терминальный ввод осуществляется с точки зрения последовательностей символов , а не событий клавиатуры . (Да, некоторые настоящие терминалы, такие как DEC VT520, поддерживают режимы "сканкода", но это не позволит восстановить то, что вы на самом деле пытаетесь сделать, и почти наверняка нет с использованием DEC VT520 или чего-либо, что полностью его эмулирует. )Последовательности представляют собой предварительно -составленные символы или управляющие последовательности ECMA -48, представляющие определенные не-графические клавиши (, т. е. клавиши функций, клавиатуры курсора, клавиатуры редактирования и клавиатуры калькулятора ).

Программы, использующие терминальный ввод-вывод, просто не используют это как часть своей парадигмы ввода-вывода.

Между прочим, в Terminfo нет почти всех или даже большинства управляющих последовательностей ECMA -48. На самом деле это очень плохой способ обработки ввода с терминала, по иронии судьбы, потому что он очень плохо работает с клавишными аккордами , которые включают не -графические клавиши и клавиши-модификаторы. Так что не ищите в terminfo информацию о терминальном вводе.

GUI, «консоли» в других операционных системах и HID низкого -уровня, на которых основаны ядро ​​(и некоторое пользовательское -пространство )виртуальные терминалы, представляют собой разные котлы рыбы. Те действительно имеют концепцию событий ввода нажатия/отпускания клавиатуры, видимых для приложений. Но общий терминальный интерфейс POSIX , используемый ZLE в оболочке Z, работает не так, как вы думаете.

Дополнительная литература

3
28.01.2020, 05:09

Теги

Похожие вопросы