Sudo

vim 以 root 身份重新編輯

  • March 13, 2015

我經常在 vim 中打開一個文件,進行一些更改,並且何時保存文件是只讀的..(由另一個使用者擁有)。我正在尋找有關如何以 root 身份重新打開文件並保留更改而無需先將其保存到臨時文件以以 root 身份複製或重新編輯的提示。

從這個stackoverflow答案,由skinp

:w !sudo tee %

在編輯我沒有寫權限的文件之前,我經常忘記 sudo。當我來保存該文件並收到權限錯誤時,我只需發出該 vim 命令即可保存該文件,而無需將其保存到臨時文件然後再次將其複制回來。

請不要為此投票給我。我不建議實施這個答案,但這是 rkthkr 要求的答案。

rkthkr 說:

不過最好重啟 vim 並以 root 身份執行

這樣做的方法是,:!sudo vim %

正如我在 ipozgaj 中提到的那樣,將 % 作為參數(甚至是子參數)替換為目前緩衝區的路徑。(可能會提示您輸入密碼。)您最終會得到一個由 root 擁有的新 vim 程序,它是原始 vim 程序的子程序。聽起來很傻,對吧?這是它在 ps 中的樣子:

~# ps afo pid,ppid,user,stat,comm
 PID  PPID USER         STAT COMMAND
16187 30478 rbronosky    Ss   bash
16510 16187 rbronosky    R+    \_ ps
30482 30478 rbronosky    Ss   bash
16244 30482 rbronosky    S+    \_ vim
16318 16244 root         S+        \_ vim

如果您對包含該文件的目錄具有寫入權限並且對它進行了編輯,您可能會收到交換文件退出的警告。選擇

$$ R $$ecover,將反映父 vim 程序所做的*大部分更改。**(*我認為交換更新可能是定時的或有一個增量門檻值。我已經在這方面投入了太多時間,不想研究它。)*當你退出 vim 時,不要驚慌仍在 vim 中…您打開了第二個 vim 程序。記住? 現在,說了這麼多……我幾乎永遠不會這樣做。也許,如果我沒有足夠或太多的咖啡,我意識到我將需要以 root 身份編輯更多的文件……我可以試試這個。在 14 年的管理系統中,我從來沒有。但是,在您對我的首選解決方案(與 dbr 提供的完全一樣)表示不滿之前,我從未想過這一點。

引用自:https://serverfault.com/questions/22558