当我执行 sudo vim 时,如何获得正常的 vim 初始化?

当我执行 sudo vim 时,如何获得正常的 vim 初始化?

我定义了一个别名, alias svi='sudo /usr/bin/vim -i /home/jeff/.viminfo -u /home/jeff/.vimrc'但是当我输入时,svi myfile我得到了

处理 /home/jeff/.vimrc 时检测到错误:
第 1 行:
E117:未知函数:pathogen#infect

似乎我需要强制 vim 在执行之前扫描我的 .vim 目录。call pathogen#infect() 我该怎么做呢?总的来说,我如何确保在运行时sudo vim获得与运行时相同的环境vim

答案1

当我执行 sudo vim 时,如何获得正常的 vim 初始化?

通过使用$ sudo -e filename而不是$ sudo vim filename

该命令将:

  1. 询问您的密码(如果 sudoers 安全策略要求这样做);
  2. filename复制一份/tmp/
  3. 打开它就像你通过按顺序检查以下内容来找到第一个编辑器:,,,,$SUDO_EDITOR最后是 /etc/sudoers 中指定的编辑器列表;$VISUAL$EDITOR
  4. 写入时将其复制回原始文件名。

请参阅man sudoman sudoers以了解更多信息。

答案2

虽然我打算接受@romainl 的答案作为首选解决方案(在他稍微调整之后),但我还是再次尝试研究解决我遇到的错误的方法,因为我讨厌电脑战胜我。

事实证明,错误与以 root 身份运行时 vim 选项的解析方式有关runtimepath。因此,为了纠正错误,我稍微更改了别名,并将alias svi='sudo /usr/bin/vim -i /home/jeff/.viminfo -u /home/jeff/.svimrc'以下三行放入 /home/jeff/.svimrc

set runtimepath=$HOME/.vim,$VIM/vimfiles,$VIMRUNTIME,$VIM/vimfiles/after,$HOME/.vim/after,/home/jeff/.vim
source /etc/vimrc
source /home/jeff/.vimrc

我不再收到错误,我的自定义内容似乎正在工作(到目前为止)。但如果我遇到任何其他故障,我会仔细检查:help initialization一下,看看我的 .svimrc 文件中还应该添加什么内容……

相关内容