vi_usage
以普通用户身份打开,以 root 用户身份保存
:w !sudo tee %
:w - 这是写入命令。由于没有给出参数,vim 将把整个文件写入标准输出;
!sudo - 将 sudo 命令作为 shell 命令而不是 vim 命令运行;
tee - tee命令用于读取标准输入并将其写入标准输出或文件;
% - vim 将其替换为您正在编辑的当前文件的名称。
:w 命令将整个文件写入 STDOUT(标准输出);然后,我们使用sudo命令(因为我们编辑的毕竟是一个系统文件)来获得临时权限。
百分号(%)表示文件名,tee 命令从 STDOUT 获取 vim 的输出并将其写入 % 文件。
保存文件前显示差异
:w !diff % -
:w 用于保存/写入,在这个特定场景中,如果命令中没有指定文件名,则输出将写入STDIN(标准输入)文件;
:!
% 表示未修改的当前文件的名称;试试这个::!echo %
- 是 diff 命令的 STDIN 文件。
因此,该命令首先将所有[未保存]内容写入STDIN文件。然后diff命令读取当前文件(%)并将其与STDIN(-)文件进行比较。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!