You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Vim中为同类型文件配置多模板?解决CPP模板重复加载问题

解决Vim根据文件名加载不同CPP模板的冲突问题

问题出在你当前的自动命令匹配规则上:*.cpp会匹配所有以.cpp结尾的文件,包括文件名末尾带=的xxx=.cpp,所以创建这类文件时,两个BufNewFile事件都会触发,导致两个模板被同时加载。

可以通过以下两种方式解决:

方式一:给第一个规则添加条件判断

修改第一个自动命令,只有当文件名不是以=.cpp结尾时才加载默认模板:

au BufNewFile *.cpp if expand("%") !~# "=.cpp$" | 0r ~/.vim/templates/skeleton.cpp | endif
au BufNewFile *=.cpp 0r ~/.vim/templates/another.cpp

这里expand("%")获取当前文件名,!~# "=.cpp$"表示不匹配以=.cpp结尾的文件名,以此跳过第一个模板的加载。

方式二:修改第一个规则的匹配模式

把第一个规则的匹配模式改成只匹配**文件名末尾(.cpp前)不带=**的CPP文件:

au BufNewFile *[^=].cpp 0r ~/.vim/templates/skeleton.cpp
au BufNewFile *=.cpp 0r ~/.vim/templates/another.cpp

*[^=].cpp是Vim的通配符匹配规则,[^=]表示匹配任意非=的字符,这样xxx=.cpp不会触发第一个规则,只会触发第二个。

两种方式都能实现你的需求,选一种修改vimrc后重启Vim即可生效。

内容的提问来源于stack exchange,提问作者RoyKin00

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 06:45:16