儲存在 Vim 中編輯的只讀檔案

有時,我們可能會開啟一個檔案,我們無權使用 sudo 在 Vim 中寫入。

使用此命令儲存在 Vim 中編輯的只讀檔案。

:w !sudo tee > /dev/null %

你可以在 .vimrc 中對映到:w!!

cmap w!! w !sudo tee > /dev/null %

你將看到一個提示,如圖所示。

StackOverflow 文件

O,檔案將被儲存。它在 vi / vim 中保持開啟以進行更多編輯或閱讀,你可以通過鍵入:q! 來正常退出,因為檔案仍以只讀方式開啟。

命令說明

:w ............................ isn't modifying your file in this case, 
   ............................ but sends the current buffer contents to 
   ............................ a substituted shell command
   !sudo ...................... call the shell 'sudo' command
         tee .................. the output of the vi/vim write command is redirected 
                                using the 'tee' command
             > /dev/null ...... throws away the standard output, since we don't need 
                                to pass it to other commands
                         % .... expands to the path of the current file

資料來源: