有趣的事情发生在我身上vim
:我对用户做了一些更改,~/.vimrc
以便使用一个简单的功能定制状态行(在我改进代码时对几次保存进行了更改),现在如果我从命令行运行,代码加载没有任何问题,但由于某种原因,当我运行或从 GUI(应用程序菜单)运行时vim FILE
,它会加载以前的版本.vimrc
(即以前保存的版本)。sudo visudo
vim
很奇怪。
我之所以能发现这一点,是因为由于缺少一个语法错误,导致该函数出现语法错误,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
以便您可以区分不同的文件版本。