在某些情况下,vim 使用以前版本的 vimrc

在某些情况下,vim 使用以前版本的 vimrc

有趣的事情发生在我身上vim:我对用户做了一些更改,~/.vimrc以便使用一个简单的功能定制状态行(在我改进代码时对几次保存进行了更改),现在如果我从命令行运行,代码加载没有任何问题,但由于某种原因,当我运行或从 GUI(应用程序菜单)运行时vim FILE,它会加载以前的版本.vimrc(即以前保存的版本)。sudo visudovim

很奇怪。

我之所以能发现这一点,是因为由于缺少一个语法错误,导致该函数出现语法错误,let而我在最终版本中已经修复了这个错误,用户可以从 shell 中正常加载,但从 GUI 运行时或使用在sudo启动时加载有语法错误的代码版本时,用户无法正常加载。

我尝试复制用户.vimrc/root运行grep -rI "functionName" ~,但都没有帮助。

有趣的是,当内部vim状态行损坏时,如果我使用:e $MYVIMRC它,它会加载正确的状态行,以便我也可以使用:source $MYVIMRC,并且一切看起来都很好(也就是说,状态行有效,语法错误消失)。

猜测一下为什么在vim启动时,在这两种情况下(甚至更多)会使用以前的版本?

答案1

当我听到“配置过时”时,我会怀疑以下情况:

  • 符号链接损坏/忘记将用户配置复制到 root(这特定于您在 root 下运行的用例)
  • 存储会话(:mksession)包含旧配置并自动恢复(这里似乎不是这种情况)
  • 环境问题(Vim 有多个位置和覆盖来查找配置,如 所述:help startup

我会:scriptnames先检查损坏的根会话。这样应该可以知道哪个会话~/.vimrc被选中,以及是否还有其他(替代)配置被错误加载。如果这没有提供任何线索,您可以使用vim -V20vimlog(可能sudo在您的例子中以前缀为,这样就会出现问题)捕获 Vim 会话的完整日志。退出 Vim 后,检查vimlog日志文件,并可能向其中添加注释,~/.vimrc以便您可以区分不同的文件版本。

相关内容