Если я хочу привязать сопоставление клавиш к функции или виджету в zsh, я узнал, что сначала мне нужно нажать Ctrl+ v- в приглашении, затем ввести последовательность клавиш, которую я хочу использовать, а затем использовать вывод в моей команде привязки клавиш.
Так, например, если я хочу сопоставить действие открытия текущего содержимого командной строки в редакторе, мне нужноCtrl+xCtrl+v
- нажмите Ctrl+ v-, чтобы войти в «режим сброса клавиш»
- ударятьCtrl+xCtrl+v
- В моем случае это приводит к
^X^E
- В моем случае это приводит к
- возьмите
^X^E
и используйте его в моей команде привязки клавиш, например
bindkey "^X^E" edit-command-line
Зачем это необходимо и что на самом деле происходит «за кулисами», когда я это делаю?
решение1
При нажатии Ctrl- Vоболочка начнет игнорировать прерывания клавиатуры и просто воспримет нажатую комбинацию клавиш как входной символ. Это легко осуществимо, поскольку ASCII разработан для хранения всех управляющих символов.
Конечно, на дисплее приходится немного схитрить и показывать , а ^
затем соответствующую клавишу, иначе вместо того, что нужно видеть, будут выводиться управляющие символы.
Обратите внимание, что в bindkey
документации указано, что поддерживаются две нотации для управляющих символов: (примеры см. в Ctrl- X)
- нотация с кареткой, которая заключается в явной записи каретки ( ^), за которой следует соответствующий управляющий символ в текстовом виде ( в этом вопросе метод Ctrl- не нужен); пример:V
^X
C-
за которым следует управляющий символ; например:C-x
. Это приводит к тому, что некоторые комбинации клавиш требуют экранирования (даже если вы его не используете). Вероятно, вам следует прочитать всеscreen
руководствоbindkey
.