Подтвердить что ты не робот

Отображение функциональных клавиш в vim

Я хочу сопоставить мой F2 для nerdtree со следующей записью:

map <F2> :NERDTreeToggle<CR>

Но даже до этого и после сохранения vimrc, всякий раз, когда я нажимаю F2, он просто переключает случай букв, на которых присутствует курсор. Позже выяснилось, что любой функциональный ключ делает это. F5 переключает регистр из 5 символов и т.д. Это из-за какого-то другого плагина? В настоящее время я использую c.vim, snippetsEmu, surround, nerdtree и minibufexpl

В моем vimrc нет никаких клавиш для любого функционального ключа.

4b9b3361

Ответ 1

Ваша проблема в том, что vim не знает, что терминал испускает, когда вы нажимаете <F2>. На некоторых терминалах он испускает что-то вроде <Esc>[12~, поэтому vim выходит из текущего режима (или просто подает звуковой сигнал, если он не может) (<ESC>), ничего не делает ([1: после [ должен быть некоторый ключ, но не 1, поэтому он ничего не делает) и изменяет регистр двух букв (2~). Итак, вы должны открыть .vimrc и записать там следующее:

set <F2>=<C-v><F2>

где <C-v><F2> означает, что вы должны нажать <C-v>, а затем <F2>. Эта строка должна указывать Vim точную последовательность кодов, которая испускается терминалом при нажатии <F2>. После этого используйте noremap <F2> whatever, и он должен работать. Если это не единственный терминал, который вы используете, вы можете поставить if $TERM==#"<C-r>=$TERM<CR>" перед этой строкой и endif после.

Ответ 2

:map <F2> :NERDTreeToggle<CR>

После запуска Vim вы можете посмотреть

:map <F2>

к которому привязан F2. Возможно, что плагины меняют отображение (не видно в .vimrc)