Во-первых, вам нужно определить, отправляет ли ваш терминал различные escape-последовательности для этих комбинаций клавиш. Приложения, работающие в терминалах, получают символы ввода, а не ключи. Функциональные клавиши кодируются как управляющие символы или как escape-последовательности, начинающиеся с escape-символа (который вы можете написать как \eв привязке ключа).
Чтобы увидеть escape-последовательность, отправленную комбинацией клавиш в терминале, нажмите Ctrl+ Vв командной строке, затем нажмите комбинацию клавиш. Например, если я нажимаю Ctrl+ VCtrl+ Leftв приглашении оболочки, я вижу ^[O5D. ^[является escape-символом, поэтому мне нужно привязать \eO5DMutt, чтобы он реагировал на Ctrl+ Left:
bind editor \eO5D backward-word
Некоторые терминалы отправляют одну и ту же escape-последовательность для одного и того же ключа с разными модификаторами. Если это так, вам нужно выяснить, как изменить поведение терминала или переключиться на другой терминал.
Звучит хорошо, но это не работает. \eэто управляющий ключ, а не управляющий символ ...
Profpatsch
@Profpatsch Странно, эта привязка работает для меня. Я использую Mutt 1.5 с тех пор навсегда, может быть, 1.4 работает по-другому? Это работает, если вы используете \eв макросе macro editor \e[O5D \eb:?
Жиль "ТАК - перестань быть злым"
1
Я на Терминаторе, когда я Ctrl+Downполучаю ^[[1;5B, я получаю , это не работает bind index \e[1;5B commandи не с этим \e1;5B тоже. О, я работаю с Mutt 1.5.21 (Arch.;)
Profpatsch
1
@Profpatsch Хорошо, я могу воспроизвести это. Там , кажется, ограничение до 5 символов: bind editor \e[1\;5 backward-wordработает для меня (и вставляет дополнительную , Dкогда я вхожу ESC [ 1 ; 5 D), но bind editor \e[1\;5D backward-wordприводит к ESC [ 1 ; 5 Dничего не делая. Я вижу ограничение в 8 символов в исходном коде ( MAX_SEQ), но ничего, что могло бы вызвать 5 символов.
Жиль "ТАК - перестань быть злым"
@Profpatsch Обходной путь - заставить ваш терминал отправлять более короткие последовательности. Я не знаю, поддерживает ли Терминатор это.
Если вам удалось использовать :exec what-keyэту информацию для получения этой информации, но затем не удалось определить «какую клавишу» нажать для выхода из what-keyкоманды, последовательность клавиш для выхода - это Ctrl-g.
KDN
@KDN: Спасибо. Было немного неловко. ;)
Текин
@KDN Ctrl-gиспользуется для отмены команд в emacs и многих оболочках unix.
\e
это управляющий ключ, а не управляющий символ ...\e
в макросеmacro editor \e[O5D \eb
:?Ctrl+Down
получаю^[[1;5B
, я получаю , это не работаетbind index \e[1;5B command
и не с этим\e1;5B
тоже. О, я работаю с Mutt 1.5.21 (Arch.;)bind editor \e[1\;5 backward-word
работает для меня (и вставляет дополнительную ,D
когда я вхожуESC [ 1 ; 5 D
), ноbind editor \e[1\;5D backward-word
приводит кESC [ 1 ; 5 D
ничего не делая. Я вижу ограничение в 8 символов в исходном коде (MAX_SEQ
), но ничего, что могло бы вызвать 5 символов.Я нашел правильный ответ здесь :
Внутри дурака используйте команду
Затем, нажав нужную клавишу (например, Ctrl + стрелка), вы можете узнать, как ссылаться на любую клавишу. В моем случае я получаю
<C-Up>
Ctrl + Up.источник
:exec what-key
эту информацию для получения этой информации, но затем не удалось определить «какую клавишу» нажать для выхода изwhat-key
команды, последовательность клавиш для выхода - этоCtrl-g
.Ctrl-g
используется для отмены команд в emacs и многих оболочках unix.