VIM странное поведение F1-10

Недавно я начал встречаться с действительно раздражающим поведением в VIM:

Неважно, если я нахожусь во вставке или нормальном режиме, если я нажимаю одну из клавиш F, энергия не делает то, что это обычно предназначается, чтобы сделать:

F1 - inserts a "P"
F2 - inserts a "Q"
F3 - inserts a "R"
F4 - inserts a "S"
F5-10 - inverts case

При использовании GVim все работает как ожидалось. Какие-либо предложения? Я использую версию 7.3 на Индивидуалисте Ubuntu 10.10. Используя разделитель, но изменяющийся на терминал по умолчанию не помогает.

3
задан 16.06.2014, 18:03

1 ответ

Это вызвано тем, что терминал переводит X событий в escape-последовательности как они:

<F1> -> ^[OP
<F2> -> ^[OQ
<F3> -> ^[OR
<F4> -> ^[OS
<F5> -> ^[[15~
<F6> -> ^[[17~

и так далее (^[ символ ESC). В некоторых терминалах энергия может получить эти последовательности от terminfo базы данных, но иногда terminfo база данных не соответствует символам, на самом деле отправляют, или не делает содержит key_f* записи. В этом нажатии случая <F1> приведет к получению Escape (выходит из текущего режима, если это не нормальный режим), O (в нормальном режиме: создайте новую строку перед строкой курсора и введите режим вставки), и некоторый символ, который вставляется на новой строке (и для <F5>-... ключи ~ та команда, которая инвертирует случай). Можно зафиксировать его путем помещения в vimrc чего-то как этот

" Condition should identify terminal in question so "
" that it won't change anything for terminals without this problem "
if !has("gui_running") && $TERM is "xterm"
    for [key, code] in [["<F1>", "\eOP"],
                        \["<F2>", "\eOQ"],
                        \["<F5>", "\e[15~"],
                        \]
        execute "set" key."=".code
    endfor
endif

Если Ваши коды отличаются от этого, которые я использовал в качестве примера, использовать <C-v><F1> (во вставке или режимах командной строки) для получения то, что отправляет терминал (больше информации в :h i_CTRL-V).

8
ответ дан 07.12.2019, 23:16

Теги

Похожие вопросы