我在.vimrc中有以下内容,以便在保存后进行处理
" source as soon as we write the vimrc file
if has("autocmd")
  autocmd bufwritepost .vimrc source $MYVIMRC
endif
但是,我有一个更复杂的文件,似乎保存后发布vimrc文件的时间越来越长,我必须退出我的gvim会话并重新开始.
是否有一个"清晰的工作空间"或更好的方法来解决这个问题,以便我可以整天保持在我的单一gvim会话的舒适范围内?
FDi*_*off 11
每次autocmd来源时,它都会被添加到autocmd列表中.因此,当您保存时,您可能会花费数千次来获取vimrc,因为每次您获取时都会将autocmd添加到列表中.(您可以看到autocmd通过执行多次添加:au bufwritepost)
要解决此问题,您只需将autocmd包装在augroup中,并在加载时清除该组.
augroup NAME_OF_GROUP
  autocmd!
  autocmd bufwritepost .vimrc source $MYVIMRC
augroup end
在autocmd!从组中移除所有自动命令.
帮助页面阅读:h autocmd-define和:h autocmd-groups
也许您遇到过它概述的现象
:h autocommand
帮助说:
当您的 .vimrc 文件来源两次时,自动命令将出现两次。为了避免这种情况,请在定义自动命令之前将此命令放入 .vimrc 文件中:
Run Code Online (Sandbox Code Playgroud):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