Моя настройка терминала - gnome-terminal + tmux + zsh с привязками vi.
В таких приложениях, как vim или даже в режиме редактирования vi в командной строке zsh, мне часто приходится нажимать ESCклавишу, но перед тем, как действие этой клавиши проявится, возникает небольшая задержка. См. Экран GNU замедляет работу клавиши Vim ESC
После некоторых экспериментов я обнаружил, что нажатие ESCклавиши и сразу другой клавиши (скажем b) имеет тот же эффект, что и нажатие Alt+b. Я не знаю, почему это так (вероятно, по наследству, когда не было Alt? Я не знаю). В любом случае, у меня есть два Altключа, и я не хочу такого поведения с моим ESCключом. Я пытался с, C+[и его та же проблема с этим тоже.
Я не уверен, кто за это отвечает, gnome-терминал или tmux или сама моя ОС (Ubuntu Natty). Любые идеи о том, как решить эту проблему, были бы великолепны.
Обновление : я проверил без tmux на другом терминале (LXTerminal) и там тоже присутствует задержка.
Ответы:
Вот реальное исправление. Добавьте следующее к
.tmux.conf
:источник
tmux kill-server
чтобы это вступило в силу.tmux-prefix
(по умолчаниюCtrl+b
):
и введяsource-file $HOME/.tmux.conf
.Задержка вызвана процедурой ввода, которая может решить, была ли нажата функциональная клавиша или нет. Для этого подпрограмма ввода запускает таймер всякий раз, когда она читает символ ESC. Символы, которые считываются с ввода перед тем, как закончится таймер (скажем, десятая часть секунды), затем интерпретируются как последовательность ESC функциональной клавиши, и эта последовательность ESC будет сравниваться с известными строками последовательностей ESC из terminfo или база данных termcap (зависит от того, какие подпрограммы низкого уровня используются).
Конечно, это раздражает для приложений, где ESC используется сам по себе, но я не знаю никакого обходного пути для этого.
Относительно вашего вопроса с поведением ESC a= Meta a:
Мета-клавиши были доступны не со всеми клавиатурами. В качестве обходного пути часто разрешалось использовать клавишу ESC, которая должна быть нажата перед другой клавишей.
источник
Хотя это не может напрямую решить вашу проблему, я обнаружил, что могу использовать
<Ctrl> c
для выхода из режима вставки. Это также можно использовать для выхода из экранной прокрутки tmux (которую можно вызвать с помощью<leader> PgUP
)источник
<C-c>
для выхода из режима вставки при регулярном использовании, так как он не запускаетInsertLeave
автокоманду, которую могут наблюдать некоторые плагины. См:h i_CTRL-C
.