Как заставить Vim быстрее распознавать ESC?

Я использую Vim, почти исключительно в консоли. Когда я выхожу из режима вставки, нажав <ESC>, в Vim наблюдается заметное отставание, распознающее команду. Задержка похожа на задержку, когда я нажимаю клавишу <leader>, я предполагаю, чтобы дать мне время для ввода других символов в картографировании. Есть ли опция, которую я могу настроить для того, чтобы заставить Vim быстрее распознавать клавишу эвакуации?

Ответы

Ответ 1

Если вы используете tmux, это может привести к задержке. Поместите это в файл ~/.tmux.conf:

set -s escape-time 0

Ответ 2

Вкратце копирование из fooobar.com/questions/349081/...:

Вероятно, вы захотите проверить :help 'timeout' и настроить параметры соответственно. Вы можете установить timeoutlen на более короткую продолжительность, если это необходимо (ttimeoutlen по умолчанию установлен на -1, поэтому он не используется).

Ответ 3

Возможно, что вы выполняете медленное действие, когда вы покидаете режим вставки.

Вы можете проверить это, оставив режим вставки с помощью CTRL-C или используя :au InsertLeave.


Edit:

Вы также можете проверить, есть ли какие-либо сопоставления или сокращения, которые ждут завершения с :iab и :imap.

Ответ 4

set noesckeys

помогите esckeys:

'esckeys' 'ek'      boolean (Vim default: on, Vi default: off)
                    global
                    {not in Vi}

    Function keys that start with an <Esc> are recognized in Insert
    mode.  When this option is off, the cursor and function keys cannot be
    used in Insert mode if they start with an <Esc>.  The advantage of
    this is that the single <Esc> is recognized immediately, instead of
    after one second.  Instead of resetting this option, you might want to
    try changing the values for 'timeoutlen' and 'ttimeoutlen'.  Note that
    when 'esckeys' is off, you can still map anything, but the cursor keys
    won't work by default.
    NOTE: This option is set to the Vi default value when 'compatible' is
    set and to the Vim default value when 'compatible' is reset.

Ответ 5

Это может быть то, что происходит с вами - это то, что показало эти симптомы для меня.

После того, как map пропинговал клавишу Alt, чтобы использовать комбинации мета-клавиш (в Mate-Terminal или Konsole в Debian), я заметил то же самое - выход из режима вставки занял timeoutlen. Это было неприемлемо, даже с коротким timeoutlen - но использование nmap занимает сразу :)

" Using 'map' delays getting out of insert mode by timeoutlen!
for i in range(97,122)
    let c = nr2char(i)
    "exec "map \e".c." <M-".c.">"
    "exec "map! \e".c." <M-".c.">"
    exec "nmap \e".c." <M-".c.">"
endfor