VIM 8.0 GUI模式下禁用插入模式功能键输入缓冲区的方法
解决GVIM插入模式下功能键输出文本的问题
我之前也碰到过一模一样的情况,GVIM图形界面里插入模式按功能键会直接打出<F2>这类文本,完全没法当成快捷键用。其实这是VIM对功能键的映射没配置对,或者默认识别逻辑出了问题,给你几个可行的解决办法:
1. 直接给功能键设置插入模式映射
这是最直接的方案,比如你想把F2设置成插入模式下快速保存文件,就在你的~/.vimrc(Windows系统是_vimrc)里加一行:
inoremap <F2> <Esc>:w<CR>
这样插入模式按F2就会自动退出插入模式执行保存操作,再也不会打出<F2>了。当然你可以把<Esc>:w<CR>换成任何你需要的功能,比如插入常用文本:inoremap <F2> Hello World!。
2. 修复功能键识别问题(如果映射不生效)
有时候GVIM可能没正确识别功能键,这时候你可以先查看VIM实际接收到的按键序列:
- 进入插入模式,先按
Ctrl+V,再按F2,这时候缓冲区里会显示VIM识别到的原始序列(比如可能是^[OQ,其中^[是转义符)。 - 然后用这个序列来写映射,比如:
inoremap ^[OQ <Esc>:w<CR>
(注意^[是通过Ctrl+V+Esc输入的,不是手动打^和[)
另外也可以试试加<Special>修饰符,强制VIM把它当成特殊功能键处理:
inoremap <Special><F2> <Esc>:w<CR>
3. 单纯禁用功能键的文本输出
如果你暂时不想给F2设置具体功能,只是不想它打出<F2>文本,可以用“无操作”映射:
inoremap <F2> <Nop>
这样按F2就不会有任何输出,之后需要设置快捷键时再修改这个映射就行。
最后注意
修改完配置文件后,记得重启GVIM或者输入:source ~/.vimrc让设置生效。不同版本的GVIM(比如GTK和Qt版)可能有细微差异,要是第一种方法不行,试试后面的总能解决。
内容的提问来源于stack exchange,提问作者elldur
相关产品推荐
相关产品推荐

