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