忘记sudo打开vim时写当前用户没有权限更新的文件
有时候打开文件编辑完了才发现没有权限写当前文件,退出重新编辑?不用!vim里面调用外部命令写时使用sudo就可以了。
:w 命令如果不提供参数,则将当前缓冲区写到当前编辑的文件内,但是如果提供参数,比如
:w new_file 则将当前缓冲区内容写到新文件new_file中,其实:w命令有很多种形式
更进一步
1 | :\[range\]w\[rite\] \[++opt\] !{cmd} |
上面的命令形式,将range范围内的缓冲区作为标准输入调用cmd命令。
而tee命令读取标准输入,然后将其写到文件和标准输出中,在vim中%代表当前编辑缓冲区的文件名,从而有了下面的命令:
1 | :w !sudo tee % |
但tee命令还会向standard output输出内容,可以将其重定向到/dev/null
1 | :w !sudo tee % > /dev/null |
还可以利用cat命令来达到同样的目的:
1 | :w !sudo sh -c "cat > %" |
===
[erq]