當我執行 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:未知功能:病原體#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$VISUAL$EDITOR,最後是 /etc/sudoers 中指定的編輯器清單;
  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 檔案中還應該包含哪些內容...

相關內容