Последствия установки tmux 'escape-time 0'?

16

Я обнаружил, что при запуске (нео) vim внутри tmux, клавиша escape задерживается. Это исправлено путём

set -sg escape-time 0

по моему .tmux.conf. Предположительно, это отключает возможность использования ESC в качестве «мета» ключа. Предполагая, что я всегда работаю с клавиатурами, у которых клавиша Alt действует как «мета», мне интересно, какие потенциально нежелательные последствия могут иметь эти настройки.

Майкл Гёрц
источник

Ответы:

16

Установка escape-timeв ноль мешает распознаванию функциональных клавиш tmux. На его странице руководства написано

escape-time time
Установите время в миллисекундах, в течение которого tmux ждет после ввода escape, чтобы определить, является ли он частью последовательности функции или мета-ключа. Значение по умолчанию составляет 500 миллисекунд.

Термин «функциональная клавиша» применяется ко всему, что имеет этот формат (включая pageup, используемый при прокрутке через tmux, и клавиши курсора). 500 миллисекунд могут быть чрезмерными, если вы никогда не работаете удаленно. 20 миллисекунд работоспособны для локальных соединений. Аналогичное значение ESCDELAYв ncurses по умолчанию составляет 1000 миллисекунд; только очень небольшая часть пользователей считает необходимым изменить это.

Томас Дики
источник
хмм ... кажется, что в tmux клавиши со стрелками и pageup работают нормально, даже если время выхода равно 0
Michael Goerz
1
Документация ссылается на привязки клавиш, обрабатываемые tmux (не приложения, работающие внутри tmux).
Томас Дики
@ AntoineCotten Не могли бы вы рассказать об этом? Я думал, что Metaничего не отправлялось до тех пор, пока он не был соединен с нефункциональным ключом, и в этот момент он отправил бы escape и ключ «в одно и то же время» (меньшая задержка, чем любой разумный период опроса, предполагая, что он опрашивает вместо использования прерываний или что-то.) Я следовал своей интуиции и никогда не устанавливал таймаут выхода ниже 10, в основном потому, что ожидал, что это вызовет проблемы, если значение по умолчанию будет таким высоким.
Джон П
Поведение мета зависит от терминала. tmuxне имеет никакого контроля над этим, но знает о специальных ключах xterm (в таблице). Мета для обычного ключа в xterm что-то делает (ищите eightBitInputв руководстве). Для других терминалов это может что-то сделать, но обычно это недокументировано.
Томас Дики
@JohnP @ThomasDickey Ранее я отмечал, что настройки escape-timeна 0 мешают мета- командам в моем эмуляторе терминала. Я хотел бы внести исправление, это было верно только потому, что терминал MacOS использует Escв качестве мета- ключа. При использовании другого ключа, например, Alt, проблем не возникает . Извиняюсь за вводящий в заблуждение (удаленный) комментарий.
Антуан Коттен