保存在 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

资料来源: