Понимаете, что происходит, когда я вывожу последовательность символов терминала с помощью Ctrl-v?

Понимаете, что происходит, когда я вывожу последовательность символов терминала с помощью Ctrl-v?

Если я хочу привязать сопоставление клавиш к функции или виджету в 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.

Связанный контент