如何让Vim的项目插件在外部缓冲区更改时加载in.vim?

时间:2010-12-05 21:58:00

标签: project vim

我在Vim中使用project plugin。对于我正在进行的每个项目,我已经建立了一个自己的in.vim / out.vim,其中特定于项目的东西被设置。

例如,我在in.vim中设置了 2 的shiftwidth,而在我的.vimrc中,我将其设置为 4 。当我从项目树打开一个文件时,一切都很好:sw是2.现在,我编译源代码(Visual Studio)并得到一些编译器错误/警告。切换到Visual Studio,修复错误,然后返回Vim。

我的编辑确实意识到我在编辑器外面更改了文件并要求我重新加载文件。确认重新加载后,sw设置为 4

显然,这是因为.vimrc正在读取缓冲区重载并覆盖我在in.vim配置文件中存储的shiftwidth设置。

我的问题是:有没有办法让项目插件(或vim本身)在缓冲区刷新时加载in.vim?

解决方案

ZyX的回答向我指出了一个对我有用的处理:

  1. 在in.vim中,将全局变量设置为in.vim的路径:

    let g:invimpath = "D:/project/vimstuff/in.vim"

  2. 在.vimrc中,尝试在FileChangedShellPost发生时加载此指定文件:

    autocmd FileChangedShellPost * if exists("g:invimpath") | exe 'source ' . g:invimpath | endif

  3. 积分转到ZyX指出这条道路。

1 个答案:

答案 0 :(得分:2)

是的,它是FileChangedShellPost自动命令,但我建议您先在vimrc开头之前添加以下内容(但在scriptencoding语句之后,如果它存在):

if exists("s:vimrc_loaded")
    finish
endif
let s:vimrc_loaded=1