在vim中映射功能键

时间:2010-08-19 07:09:12

标签: vim keymapping

我想通过以下条目将我的F2映射为nerdtree:

map <F2> :NERDTreeToggle<CR>

但即使在此之前,在保存vimrc之后,每当我按下F2时,它只会切换光标所在字母的大小写。后来发现任何功能键都能做到。 F5切换5个字符的大小写,依此类推。这是因为其他一些插件吗?我目前使用c.vim,snippetsEmu,surround,nerdtree和minibufexpl

我的vimrc中的任何功能键都没有键映射。

2 个答案:

答案 0 :(得分:19)

您的问题是,当您按<F2>时,vim不知道终端发出了什么。在某些终端上它会发出类似<Esc>[12~的内容,因此vim退出当前模式(或者如果不能发出蜂鸣声)(<ESC>),什么也不做([1:必须有一些[之后的密钥,但不是1,所以它什么都不做)并更改两个字母(2~)的大小写。所以,你应该打开.vimrc并写下以下内容:

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

其中&lt; C-v&gt;&lt; F2&gt; 表示您必须按<C-v>然后按<F2>。该行应告诉Vim按下<F2>时终端发出的确切代码序列。之后,使用noremap <F2> whatever,它应该工作。如果它不是您使用的唯一终端,那么您可能希望将if $TERM==#"<C-r>=$TERM<CR>"放在此行之前,然后endif之后。

答案 1 :(得分:5)

:map <F2> :NERDTreeToggle<CR>

启动Vim后,您可以查看

:map <F2>

F2映射到的是什么。插件可能会更改映射(在.vimrc中不可见)