问题
有时候我们操作linux,编辑一些系统文件时是需要sudo操作
的,但是经常忘记使用`sudo `,直接就是vim 打开某个文件,当进行改动时出现以下情况,就要退出,重新用sudo vim 打开文件操作。
解决
我们如何在不退出的情况下完成编写呢?
输入:w ! sudo tee %
,然后出现下面的显示内容,按o
再回车
就可以了。
最后强制退出:q!
最后用cat 输入内容检查下,就会发现刚刚的内容已经写入了。
附加
:w ! sudo tee %
的意思是
:w! {cmd} 让vim 可以执行外部shell命令{cmd},且把当前缓冲区的内容从stdin传入。
tee 是一个把stdin保存到文件里的小工具
% 会vim 里的特殊字符,保存着当前文件的路径
整个意思就是把当前是文件缓冲区的内容(也就是你修改的内容)做为stdin传给tee让它写入到当前文件里。