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

Posted 星空守望者--jkmiao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习vim命令:“:w !sudo tee %”相关的知识,希望对你有一定的参考价值。

学习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 %”的主要内容,如果未能解决你的问题,请参考以下文章

Vim常用快捷键--正常的学习曲线

10-vim-选中命令-01-三种选择文本的方式

vim编辑器使用

vim相关命令

linux应用之vim的常用命令

vim常用命令总结 (转)