zoukankan      html  css  js  c++  java
  • VIM中保存编辑的只读文件

    如何在VIM中保存编辑的只读文件

    你是否会和我一样经常碰到这样的情景:在VIM中编辑了一个系统配置文件,当需要保存时才发现当前的用户对该文件没有写入的权限。如果已 经做了很多修改,放弃保存的确很懊恼,只好先保存在用户的主目录下,再用sudo mv移动到文件的原始位置,并按需要chown。这样做实在太麻烦了,以下的这个技巧就太方便了。当需要保存时,输入以下的命令:

    :w !sudo tee %

    学习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当中一个只读寄存器的名字,总保存着当前编辑文件的文件路径。
    每天一小步,人生一大步!Good luck~
     
    分类: linux
  • 相关阅读:
    PowerDesigner中如何添加约束
    C#静态构造函数总结
    PendingIntent与Intent的区别
    常用编码总结
    操作系统的版本概况
    如何制作一寸、二寸、六寸证件照片
    datagridview使用tooltip控件显示单元格内容
    OpenGL ES之Must use a native order direct Buffer解决方案
    Exception.InnerException 属性的使用
    Matrix使用的分析
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/6084737.html
Copyright © 2011-2022 走看看