我的.vimrc中有以下内容,以便在保存后进行处理
" source as soon as we write the vimrc file
if has("autocmd")
autocmd bufwritepost .vimrc source $MYVIMRC
endif
但是,我有一个更复杂的文件,看起来保存后发布vimrc文件的时间越来越长,我必须退出gvim会话并重新开始。
是否有“清晰的工作空间”或更好的方法来解决此问题,以便我可以整天保持在单一gvim会话的舒适范围内?
答案 0 :(得分:11)
每次获取autocmd时,都会将其添加到autocmd列表中。因此,当您保存时,您可能会花费数千次来获取vimrc,因为每次您获取时都会将autocmd添加到列表中。 (您可以通过执行:au bufwritepost
)
要修复此问题,您只需将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