我在 vim 配置中对常规运行时进行了一些添加。我向rtp
一个目录添加了一个ftplugin
目录,其中有两个文件:c.vim
和cpp.vim
。在这些文件中,我确定了几个名称相同但内容不同的命令,这取决于文件,是 c 文件还是 cpp 文件。
在 c.vim 中:
execute "nnoremap <silent> ".g:formatterTrigger." :call Formatters#Uncrustify#C()<Cr>"
在 cpp.vim 中:
execute "nnoremap <silent> ".g:formatterTrigger." :call Formatters#Uncrustify#Cpp()<Cr>"
但是我通过scriptnames
命令看到这两个 ft 文件都已加载。而且 c.vim 是第一个加载的,所以在 cpp 文件中我有 c 命令。如何解决这个问题?
答案1
不要使用runtimepath
那个,after
目录(:h after-directory
)才是你所需要的。
将这两个文件放入~/.vim/after/ftplugin
。
答案2
由于它们的相似性,进程文件类型基于C一个。因此,正如您所指出的,两个文件都是来源。但这没有问题,因为进程最后一个,并将覆盖C一;你可以检查
:verbose execute 'nnoremap' g:formatterTrigger
一般来说,这没什么可担心的(除非你定义了:map <unique>
,在这种情况下会抱怨),并且你已经知道可以使用类似的命令:scriptnames
来解决此问题。