vim 用sudo 进行保存的终极奥义
Posted ayanmw
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vim 用sudo 进行保存的终极奥义相关的知识,希望对你有一定的参考价值。
经常使用vim忘记了不是root , 而提示没有写入权限的情况,所以查询一下,相关命令是:
:w !sudo tee %
那么这条命令是如何理解的呢?
首先 ,vim 写入文件是
:w [文件名]
这里的文件名也可以是设备,比如 /dev/stdin /dev/stdout
我们没有权限,先把内容写到 `/dev/stdin` ,
其次 理解tee的含义,就是把从 stdin 读取的内容重定向到某一个文件,类似于 `>>` 符号,但 你无法使用 `sudo >>` ,所以 tee 是 >或 >> 的一个替代命令, >和>> 或者< 和<< 根本不是命令,
所以 sudo tee [文件名],就是从标准stdin 来写入到[文件名]。
在vim 命令模式下, `%` 就是 当前的文件名,是一个当前文件名的快速替换品,或者说是环境变量也可以。
`sudo tee %` 就是 把内容写入到当前文件。
所以 合并两面两点,vim 先写入到 一个能返回 stdin 的命令,这个命令就是 sudo tee % , 为了调用这个命令,前面加一个感叹号
如果换成shell,其实上面的命令就是
echo ${文件_Buff} | sudo tee ${文件名}
这样就能解释并记住这个命令了:
:w !sudo tee %
理解tee的含义,就是把从 stdin 读取的内容重定向到某一个文件,类似于 `>>` 符号,但 你无法使用 `sudo >>` ,所以 tee 是 >或 >> 的一个替代命令, >和>> 或者< 和<< 根本不是命令,
以上是关于vim 用sudo 进行保存的终极奥义的主要内容,如果未能解决你的问题,请参考以下文章