vim 判断文件类型并使用imap进行不同的映射无效

新手上路,请多包涵

image.png
代码如图
imap的内容没有问题,后面的imap都能用,if里面的imap我之前试过也没有问题。

&filetype 我也使用echo看过没有错误,但无论在.c还是.py文件中,{}都无法映射(插入模式下输入完全是普通的输入)

阅读 2.5k
1 个回答
新手上路,请多包涵

可以添加这两行到的_vimrc或者.vimrc当中:

autocmd FileType c      inoremap <buffer> {} {}<left><cr><esc>kA<cr>
autocmd FileType python inoremap <buffer> {} {}<left>

不过当要执行的Ex命令比较多的时候,在保证filetype plugin on的前提下,可以考虑加到after/ftplugin/xxx.vim当中,xxx代表各种语言名称,after文件夹一般放在设置runtimepath包含的任一路径内。
比如每一次打开C语言的文件都会把after/ftplugin/c.vim里面所有的Ex命令以overrule的方式运行一次。不过我刚刚在vim测试貌似行不通,好久没有鼓捣vim了,现在用的是neovim,然后因为init.vim所在的路径是包含在设置runtimepath里面的,所以可以把after文件夹会跟init.vim放同一路径下

相关信息
:h :map-<buffer>
:h 'runtimepath'
:h ftplugin
:h ftplugin-overrule

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏