отображение функциональных клавиш в vim - PullRequest
17 голосов
/ 19 августа 2010

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

map <F2> :NERDTreeToggle<CR>

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

В моем vimrc нет сопоставлений клавиш для любой функциональной клавиши.

Ответы [ 2 ]

19 голосов
/ 19 августа 2010

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

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

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

6 голосов
/ 19 августа 2010
:map <F2> :NERDTreeToggle<CR>

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

:map <F2>

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

...