在vim中强制保存正在编辑的文件(即使当前没有写权限)

linux操作环境中,我们经常会碰上这种情况:以普通用户vim编辑一个文件,改了许多地方后,发现无权限保存。命令“:w !sudo tee %”可以很好滴解决这个问题。 下面我们简单分析一下

 “:w !sudo tee %”这条命令的含义是把当前编辑的文件的内容当做标准输入输入到命令sudo tee 文件名里去,也就是sudo保存为当前文件名。查阅vim的文档(输入:help :w),会提到命令:w!{cmd},让vim执行一个外部命令{cmd},然后把当前缓冲区的内容从stdin传入。

tee是一个把stdin保存到文件的命令(tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件),而%,是vim当中一个只读寄存器的名字,总保存着当前编辑文件的文件路径。所以执行这个命令,就相当于从vim外部修改了当前编辑的文件.

修改自网络,如侵权请告知删除!