直接贴出解决方案,输入命令
w !sudo tee % >dev/null
然后会提示文件以经被改变,要求再次提载入,同意就可以。关掉vim,再用合适的权限的打开,继续工作。
下面贴出这样做的原因,分两步理解:
1.明确知识点,vim在, 利用命令
w !<cmd>
可以直接执行linux相关命令,然后把当前缓冲区内容做为标准输入传参。则此种方法是执行命令,并且以当前的缓冲区中的内容做为标准输入。
sudo tee % >/dev/null
2.搞清tee命令的作用,将前一个命名的标准输出(即输出到屏幕)作为标准输入,然后再输出到标准输出,同时保存为对应文件。举例说明
ls | tee > out.txt
ls 输出当前目录下的所有文件,做为标输出,利用管道符号传入tee,tee将ls输出的内容做为标准输入,再次输出并备份在out.txt。
那么我们再分析上面的的命令 “tee % > /dev/null”,首先将vim中的内容输出到%中,再把屏幕回显内容扔入黑洞dev/null中,完成。其中%代表当前的编辑的文件。最后因为权限不足,加sudo。完#