Ваша проблема в том, что 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
после.