1

При вводе определенных символов в оболочке zsh (в моем случае e и;) они не отображаются сразу после нажатия клавиши. Вместо этого они появляются только через короткое время после отпускания ключа. Когда эти клавиши удерживаются, они не отображаются при удерживании клавиши, но снова появляются только через короткое время после отпускания. Все остальные клавиши отображаются сразу после нажатия клавиши, а также отображаются постоянно, удерживая ее нажатой. Если я вместо этого запущу bash в моем эмуляторе терминала, проблема исчезнет. Я ничего не могу найти по этому поводу, и подумал, что я могу упустить что-то очевидное. Любая помощь приветствуется.

1 ответ1

0

Если вы определяете связывание клавиш, которое состоит из нескольких символов, например

bindkey 'foo' some_zle_widget

Zsh должен подождать, пока не станет ясно, что вы не хотите вводить эту привязку ключей. В приведенном выше примере нажатие клавиши f будет отложено на некоторое время. Задержка будет продолжаться, если вы нажмете o, но будет отменена, если вы нажмете клавишу, отличную от o.

Итак, чтобы сузить эту проблему, начните с чистой оболочки, то есть без загрузки обычных файлов конфигурации, выполнив zsh -f . Вопрос должен исчезнуть сейчас (как вы подтвердили в комментариях).

Далее, проверьте особенно ваш файл ~/.zshrc , а также некоторые системные настройки в /etc , на предмет оскорбительных операторов bindkey .

И, наконец, когда вы пишете в комментариях, что вы хотите связать с CTRL + & leftarrow; построить правильную линию. Для этого вам нужен код, который ваш терминал посылает при нажатии этой комбинации клавиш. Вы можете использовать, например, CTRL + v CTRL + & leftarrow;, потому что CTRL + v переключает zsh в какой-то буквальный режим для следующего нажатия клавиши.+

На xterm вы получаете ^[[1;5D , поэтому правильная команда bindkey будет

bindkey '^[[1;5D' backward-word

Обратите внимание, что эти комбинации клавиш действительно разные для разных терминалов!


+ Если он не работает, заранее bindkey -e .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .