.vimrc的重新加载时间逐渐减慢

For*_*ker 18 vim reload

我对vim的启动时间大约是半秒(用"--startuptime"测试),但是在我重新加载vimrc几次之后source,它随后会变慢.我没有系统地调试.vimrc,所以我不知道如何继续.设置verbose有助于看到发生了什么,我几乎可以肯定.vimrc被多次加载.(特别是filetype.vim和ftplugin.vim)每当我按下Ctrl-C停止挂机,我得到了一个错误filetype.vim,我认为这是因为VIM大部分时间都花在试图加载filetype.vim.我看到的最可能的罪魁祸首是.vimrc的自动重载:

if has("autocmd")
    autocmd bufwritepost .vimrc source $MYVIMRC "auto source vimrc
endif
Run Code Online (Sandbox Code Playgroud)

我怎么能阻止这种情况发生?

abc*_*bcd 27

这里的罪魁祸首是你的使用autocmd.使用时定义自动命令时

autocmd <Event> <Action>
Run Code Online (Sandbox Code Playgroud)

vim定义了一个新的auto命令,无论现有命令如何.因此,如果您有多个这样的自动命令.vimrc并且反复获取它(在这种情况下,对于每次写入),您最终会定义数百和数千个自动命令,这些命令都会重复执行相同的操作.很快就会爆炸和减慢你的vim会话,这是你一直注意到的.

您需要做的是将您的自动命令分组,然后清除该组的定义autocmd!.举个简单的例子:

augroup Group1  
    autocmd!
    autocmd <Event1> <Action1>
    autocmd <Event2> <Action2>
    ...    
augroup END
Run Code Online (Sandbox Code Playgroud)

您可以拥有任意数量的组,这样您就可以通过类似的操作/事件来组织它们.