有時用 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