我定义了一个别名,
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
。
该命令将:
- 询问您的密码(如果 sudoers 安全策略要求这样做);
filename
复制一份/tmp/
;- 打开它就像你通过按顺序检查以下内容来找到第一个编辑器:,,,,
$SUDO_EDITOR
最后是 /etc/sudoers 中指定的编辑器列表;$VISUAL
$EDITOR
- 写入时将其复制回原始文件名。
请参阅man sudo
和man 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 文件中还应该添加什么内容……