有時用 Vim 編輯檔案時,發現權限不足。

要麼就保存去自己有權限的地方: :w ~/% / :w /tmp/%

要麼就得回想那句咒語::w !sudo tee %


理解

但這句咒語 :w !sudo tee % 我時間一久就會忘記,這次便好好重溫。

:w 寫入/另存為

! 執行外部 command

sudo 使用 superuser (i.e. root) 權限

tee 這個程式可以將 standard input (stdin) 導出至 檔案 & standard output (stdout)

% 這個在 Vim 的一個特殊字符,在這個情境會被替換成目前檔案的名稱。

嘛,總結來說就是, :w 把目前內容傳給了 (用 sudo 提升過權限) 的 tee 這個程度,tee 便保存內容於 目標檔案裡,而這個檔案便是目前文件的名稱(% 被替換)。


保存為設定

不想記住,可以直接在 ~/.vimrc 加個 cmap , 詳情可參考 References 裡的鏈結。

References

https://stackoverflow.com/questions/2600783/how-does-the-vim-write-with-sudo-trick-work

Recommended Posts

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments