想回的東西有點多~ 用回文好了
$ sudo vim
這樣是以 root 的身份執行 vim,所以讀的是 root 的設定檔
但若以系統管理的角度來看,有執行 vim 的權限就相當於有 root shell
怎麼說?在 vim 裡可以用 :sh 進到 shell XD
也就是說,如果今天是用 sudo vim 執行 vim,我可以透過 :sh 來得到 root shell
因此,在多人管理的系統中,除非是本來就有 root 權限的管理者
不然一般維護人員是不可以 sudo vim 的
另一方面,sudo vim 讀的是 root 的設定檔
於是需要複製一份而且更新時要同步更新... (好啦,這其實可以用 link 做到)
但如果是多人管理的系統,你不能要求其他人都用你的設定檔吧XD
那如果要修改 root 檔案內容怎麼辦?
1. 使用 sudoedit,基本上 sudoedit 就是為了解決這個問題而生的
2. :w !sudo tee % 這行指令的意思是:
w(存檔) 存到哪?
!(執行外部指令) 把檔案內容 pipe 給外部指令
sudo tee % "%"表示檔名,用 tee 接收輸入並存到同樣的位置去
加上 sudo 表示以 root 執行 tee,如此一來才能動到檔案。
我個人是使用第二個方法
因為我常常用 vim 看檔案,看一看發現要改就直接改下去
然後要存檔時才發現沒有用 sudo/sudoedit orz...
這時候用第二個方法就可以避免再重寫一次
※ 引述《noggi (阿部)》之銘言:
: 各位好,在下是vim入門新手…
: 前幾天透過版上先進教導才開始懂得C-x C-o
: 不過目前在下又遇到了一個疑問:
: 前幾天將家中的web server搬到Amazon Web Service EC2
: 使用系統為AMI(Fedora)
: 在下sftp連上後先將自己電腦裡家目錄底下的 .vimrc 和 .vim/ 傳上去遠端AMI的家目錄下
: 當然就買上來試試,ssh先連上。
: ~$ vim test.php
: 嗯很好!設定的效果都與自己電腦上使用的都一樣!
: 正當高興時,要來去cd /var/www/html/下寫個hello world的index.php
: ~$ sudo vim index.php
: 嗯很好!設定的效果都不見了,好像是預設的樣子!
: 所以我遇到的問題是:當我用sudo vim時,vim 所讀的.vimrc是不同於家目錄底下的那個嗎?
: 我該如何處理?
: 不知我形容的好不好,因為我連google搜尋都不太知道該怎麼設定關鍵字搜?
: 最後,感謝各位讀完!