关于vim的:w !sudo tee % > /dev/null 命令

转自:http://blog.sina.com.cn/s/blog_81827fc70100x6q1.html



学习vim命令:“:w !sudo tee %”

原文来自于commandlinefu

原文是这样解释这个命令的:

在vim中保存正在编辑的文件而不需要必要的权限。

(Save a file you edited in vim without the needed permissions)

下面我们就分析下这条命令是怎样做到保存文件而不需要必要的权限的

:w !sudo tee %

man vim就会发现

百分号(“%”)代表当前文件名

根据man vim的提示:

:[range]w[rite] !{cmd}  Execute {cmd} with [range] lines as standard input
(note the space in front of the ‘!’).  {cmd} is
executed like with “:!{cmd}”, any ‘!’ is replaced with
the previous command
“:w !sudo tee %”这条命令的含义是把当前编辑的文件的内容当做标准输入输入到命令sudo tee 文件名里去
也就是sudo保存为当前文件名
这个功能其实可能debian和ubuntu的用户更需要一些
因为我们都是直接root
常常忘记了sudo就直接用vim编辑/etc内的文件,(不过也不一定,vim发现保存的文件无法保存时候会提示)等编辑好了,保存时候才发
现没权限。曲线方法是先保存个临时文件,退出后再sudo cp回去。不过实际上在vim里面可以直接完成这个过程的,命令就是如此。
 
查阅vim的文档(输入:help :w),会提到命令:w!{cmd},让vim执行一个外部命令{cmd},然后把当前缓冲区的内容从stdin传入。
 
tee是一个把stdin保存到文件的小工具。
 
而%,是vim当中一个只读寄存器的名字,总保存着当前编辑文件的文件路径。
 
所以执行这个命令,就相当于从vim外部修改了当前编辑的文件.

:w !sudo tee  /var/aa.txt

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值