重新加载Vimrc文件需要更长时间

时间:2013-08-02 19:33:12

标签: vim

我的.vimrc中有以下内容,以便在保存后进行处理

" source as soon as we write the vimrc file
if has("autocmd")
  autocmd bufwritepost .vimrc source $MYVIMRC
endif

但是,我有一个更复杂的文件,看起来保存后发布vimrc文件的时间越来越长,我必须退出gvim会话并重新开始。

是否有“清晰的工作空间”或更好的方法来解决此问题,以便我可以整天保持在单一gvim会话的舒适范围内?

2 个答案:

答案 0 :(得分:11)

每次获取autocmd时,都会将其添加到autocmd列表中。因此,当您保存时,您可能会花费数千次来获取vimrc,因为每次您获取时都会将autocmd添加到列表中。 (您可以通过执行:au bufwritepost

看到autocmd多次添加

要修复此问题,您只需将autocmd包装在一个augroup中,并在加载时清除该组。

augroup NAME_OF_GROUP
  autocmd!
  autocmd bufwritepost .vimrc source $MYVIMRC
augroup end

autocmd!删除该组中的所有自动加载。

帮助页面可以阅读:h autocmd-define:h autocmd-groups

答案 1 :(得分:4)

也许您遇到了

中概述的现象
:h autocommand

帮助sais:

  

当.vimrc文件来源两次时,自动命令将出现两次。   要避免这种情况,请在定义之前将此命令放在.vimrc文件中   自动命令:

:autocmd!   " Remove ALL autocommands for the current group.
     

如果您不想删除所有自动命令,则可以使用变量   确保Vim仅包含一次自动命令:

:if !exists("autocommands_loaded")
:  let autocommands_loaded = 1
:  au ...
:endif

我习惯于像我这样对自动命令进行分组

augroup BWCCreateDir
    autocmd!
    autocmd BufWritePre * :call s:MkNonExDir(expand('<afile>'), +expand('<abuf>'))
augroup END