【问题标题】:Vimrc file takes longer and longer to reload [duplicate]Vimrc文件需要越来越长的时间来重新加载[重复]
【发布时间】:2013-08-04 04:38:22
【问题描述】:

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

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

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

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

【问题讨论】:

  • 我感觉到那里的语气...我不打算在我生命中的每个醒着的时间都处理这个文件,但过去的一天就是这样,社区很擅长回应.另外,每当我尝试新事物时,我都会将其放入 vimrc,如果您知道更好的沙盒位置,请告知!
  • 使用另一个文件:1.:vs ~/temp.vim. 2.在那里添加你的自定义映射和临时的东西。 3.:so %。在一天结束时,把好东西放在你的~/.vimrc 中,然后丢弃临时文件。

标签: vim


【解决方案1】:

也许您遇到了它在中概述的现象

:h autocommand

帮助说:

当你的 .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

【讨论】:

    【解决方案2】:

    每次获取 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-05
      • 1970-01-01
      • 2017-02-26
      • 1970-01-01
      • 2018-01-23
      • 1970-01-01
      • 2022-11-12
      相关资源
      最近更新 更多