2014-09-27 110 views
4

我有.vimrc文件存在問題,問題是它有時會加載,有時不會。。使用'sudo'編輯時,不會加載.vimrc配置文件。

1 set number 
    2 syntax on 
    3 set autoindent 
    4 map <F2> :!g++ % -Wall -time -O<CR> 
    5 echo "it works!" 

我添加了回顯以檢查它是否已加載,以及何時輸入例如vim .vimrc,它被加載並顯示我在終端中「有效」,但是當我輸入例如sudo vim test.cpp它沒有被加載,消息不顯示。我正在使用debian。

回答

14

當您使用sudo時,Vim會在不同的用戶(root)下啓動。由於此用戶有不同的主目錄,因此加載了另一個~/.vimrc(或沒有,如果該用戶沒有)。您可以通過多種方式解決問題:

  1. 可以直接指定的位置,您.vimrcsudo vim -u $HOME/.vimrc(這不會與插件幫助,雖然)。
  2. 您可以使用sudo -e <file>sudoedit
  3. 您可以用符號鏈接的.vimrc(和.vim plugins目錄)根:(!不推薦,因爲安全性和訪問權限)sudo ln -s $HOME/.vimrc .vimrc; sudo ln -s $HOME/.vim .vim
  4. 您可以更改根的整個主目錄是一樣的你
+0

請不要將用戶的'.vimrc'符號鏈接到根目錄。這樣一來,惡意程序可以編寫命令,每次運行'sudo vim'時都會以root身份運行。 – Yassine 2016-05-10 15:49:03

+0

@Yassine:對。不幸的是,即使在手動同步文件的情況下,用戶使用root分享用戶Vim配置的_any_機制也存在這個問題。你每次都必須檢查你的'.vimrc'的_entire_內容;確實有一個惡意的'如果$ UID == 0 |執行系統(...)| endif'(或者更加混淆的東西)隱藏在那裏。 – 2016-05-11 06:27:11

2

sudo vim導致vim以root用戶身份運行。這意味着vim會在root的主目錄中查找vimrc,而不是你的。

你有解決這個問題的兩個選擇是使用

sudo -e <file> 

或者你的vim配置複製到根的主目錄。

sudo -esudoedit將文件複製到tmp目錄,並允許您編輯它,然後在保存時將其複製回來。這比使用sudo vim更安全,並且是解決此問題的推薦方法。

0

我想在上使用vim AWS EC2 Amazon AMI實例。

以上答案都不能幫助我獲得配色方案或插件與sudo一起使用。該懂了工作的解決方案,但是,是可以找到here

在你.profile.bashrc或類似附加:

EDITOR=vim 
VISUAL=$EDITOR 
export EDITOR VISUAL 

,然後編輯使用sudoedit /path/to/file文件。