学习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 %”的更多相关文章

  1. 【vim】保存文件没有权限 :w !sudo tee %

    每当你打开一个你没有写入权限的文件(比如系统配置文件)并做了一些修改,Vim 无法通过普通的 ":w" 命令来保存. 你不需要重新以 root 方式打开文件再进行修改,只需要运行: ...

  2. w !sudo tee %

    w !sudo tee % 该命令可用于保存有权限的写文件

  3. 学习 Vim 命令总结

    学习 Vim 命令总结 可以使用 vscode-vim 扩展,但是要注意一些ctrl+字母的快捷键会无效,必须去掉冲突的快捷键 esc 回到普通模式 i 普通模式进入插入模式 : 进入命令模式 :wa ...

  4. 在终端中使用vim命令修改某些文件,会提示文件只读模式,可以执行以下命令强制写入

    在末行模式中输入以下命令 :w !sudo tee % 回车后可能需要输入密码

  5. 15个不起眼但非常强大的 Vim 命令

    如果我的关于这个话题的最新帖子没有提醒到你的话,那我明确地说,我是一个 vim 的粉丝.所以在你们中的某些人向我扔石头之前,我先向你们展示一系列“鲜为人知的 Vim 命令”.我的意思是,一些你可能以前 ...

  6. Vim 命令整理

    1. 文件命令 2. 模式切换 3. 移动命令 4. 书签命令 5. 修改命令 6. 可视化操作 7. 区域选择 8. 宏命令 9. 分屏 10. 系统设置命令 1. 文件命令 [:]开始的命令需要输 ...

  7. vi/vim命令详解

    基础命令学习目录首页 原文链接:https://www.cnblogs.com/mondol/p/vi-examples.html 进入vi vi filename # 打开或新建文件,并将光标置于第 ...

  8. vim 命令全

    1 简介 vim是文本编辑器.代码补完.编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用.下面讲述一些必要的基本命令,而掌握好这些命令,您就能够很容易将vim当作一个通用的万能编辑器来使用 ...

  9. 【Python Learning第一篇】Linux命令学习及Vim命令的使用

    学了两天,终于把基本命令学完了,掌握以后可以当半个程序员了♪(^∇^*) 此文是一篇备忘录或者查询笔记,如果哪位大佬看上了并且非常嫌弃的话,还请大佬不吝赐教,多多包涵 以下是我上课做的一些笔记,非常的 ...

随机推荐

  1. XML中CDATA及其字符实体的使用

    在写xml文档时,偶尔会用到一些特殊字符,如<.>.&等,如下面这段程序: <?xml version="1.0"?> <y>if x& ...

  2. Python几个标准类型内建函数

    Python提供了一些内建函数用于基本对象类型:cmp(),repr(),str(),type()和等同于repr()的(' ')操作符 (1)type() type的用法如下: type(objec ...

  3. SecureCRT注册机使用方法

    SecureCRT_7.3注册机激活步骤如下: 1)准备工作 安装好SecureCRT软件, 下载并得到该注册机. 2)保持SecureCRT软件关闭(运行的话会提示你正在运行的,关闭就好). 3)将 ...

  4. 斐波那契数列PHP非递归数组实现

    概念: 斐波那契数列即表达式为 a(n) = a(n-1)+a(n-2) 其中 a1 =0 a2 = 1  的数列 代码实现功能: 该类实现初始化给出n,通过调用getValue函数得出a(n)的值 ...

  5. ABBYY FineReader 12双十一特价来袭

    大家似乎都知道:好的办公软件,只要对自己有用,再贵都值得. 可偏偏有人不以为然,几百块钱也是肉啊.也对,毕竟不是人人都能做到"舍得".但没有舍,哪来的得呢? 作为优秀的光学字符识别 ...

  6. ws318 配置

    http://www.192ly.com/router-settings/huawei/ws318-sz.html

  7. 关于IE10出现LinkButton点击无效的解决方案

    关于IE10出现LinkButton点击无效的情况: 一般高配置的系统如Win7旗舰版SP1系统不会出现这种情况,针对家庭普通版和专业版的用户通过测试都有这种情况,对于开发人员要解决不同系统和IE的兼 ...

  8. 【转】ASP.NET Cookies简单应用 记住用户名和密码

    不要试图给Password类型的TextBox赋值! 在asp.net中,不要试图给Password类型的TextBox控件赋值! 无论是在设计或是运行时,都不可以的. 猜测的原因是,password ...

  9. OpenJudge计算概论-校门外的树

    /*======================================================================== 校门外的树 总时间限制: 1000ms 内存限制: ...

  10. es6新特性

    变量-------------------------- let, const:必须直接给一个变量赋值.注意,对象的属性或数组成员还是可以改变的. const MY_OBJECT = {some: 1 ...