我注意到vim首先执行全局vimrc和我的个人〜/ .vimrc然后是语法文件,然后是插件.vim文件。 这常常会导致用户在其.vimrc中进行的某些自定义设置被其中一个插件覆盖。我已经在例如formatoptions,iskeyword等中看到过这个。
问题是如何控制执行顺序以保证我的自定义最后应用并且不会被覆盖。
我见过很多人询问如何找到执行顺序(:scriptnames),但是没有人给出答案试图解决控制执行这些文件的顺序的任何问题,当时很明显有人问这个问题,他们的变化被一些插件或类似的东西所覆盖。
答案 0 :(得分:6)
将您的插件插入~/.vim/after - 他们将在所有其他人之后获取。
答案 1 :(得分:3)
某些设置应在vimrc
文件之后提供。文件类型特定设置是此行为的主要示例。
示例:
$VIMRUNTIME/ftplugin/python.vim
中找到。iskeyword
应该允许使用-
字词,大多数其他语言不应该这样。 'iskeyword'
&的示例设置'formatoptions'
都是缓冲区本地选项,应根据'filetype'
'filetype'
进行设置。
如果您确实要更改特定'filetype'
的这些设置,可以使用后目录在ftplugins获取后添加自定义项。
示例:如果您要为{c}文件添加-
到'iskeyword'
,请将以下内容添加到~/.vim/after/ftplugin/css.vim
文件中:
setlocal iskeyword+=-
如果插件行为不当,那么您也可以使用后目录在插件获取后进行更改。例如<{1}}来源~/.vim/after/plugin/{plugin}.vim
后将获得{plugin}
。
如需更多帮助,请参阅:
:h after-directory
:h ftplugin
:h :setlocal
答案 2 :(得分:1)
如果您只是想确保在所有其他脚本之后获取~/.vimrc
,那么您可以像这样启动vim:
vim -S ~/.vimrc
通过这种方式,您的~/.vimrc
将首先在:scriptnames
定义的所有其他脚本之前获取,但在所有其他脚本获取后再次获取。当vim已经运行时,它与.vimrc
与:so ~/.vimrc
一起采购相同。
因此,这将重新启用.vimrc
中的所有设置,无论之前加载了哪些插件。