• vim 基础学习之替换


    替换命令substitute可以用来查找跟替换操作。

    :[range]s[ubstitute]/{pattern}/{string}/[flags] [count]
    range-命令作用范围(缺省的情况下,默认是当前行)
    substitute-替换命令
    pattern-正则表达式,想要替换的内容(如果为空,会引用上次的查找结果,类似于global中的pattern)
    当然,如果我们非要想显示的使用上一个pattern,那我们可以使用<C-r>/,就会把上次的结果插入到命令行了。
    substitute命令的使用,正式分两步,首先是写查找模式,然后是替换资源
    string-要替换的内容
    flags-命令标志位(g-每行所有匹配项都替换;c-替换的时候提示;e-屏蔽未搜索到错误信息)


    这里我们简单说一下关于c提示。当我们选择这个替换标志位的时候,每要替换一个匹配项的时候,我们系统就是提示我们是否替换,主要有以下选择

    1.y-替换
    2.n-不替换
    3.q-退出替换
    4.l(lastA)-匹配完当前项以后退出
    5.a(all)-替换此处跟以后的所有匹配项
    6.<C-e>-向上滚动屏幕
    6.<C-y>-向下滚动屏幕
    count-执行次数


    例子如下

    aaabbbccc
    aaadddeee
    bbbdddccc
    abcdefghi
    adbbbcdefaaf


    特殊字符
    -插入一个换行符
    例如,你执行如下的命令

    :11,12s/aaa/
    /g


    上面的结果就会变为

    bbbccc
    
    dddeee


    也就是aaa变为了换行符

    	-插入一个制表符
    \-插入一个反斜杠
    1-插入第一个子匹配(可以类推到9)
    0(&)-插入匹配所有内容
    ~-使用上次调用substitute时候的替换string
    ={vim script}-执行{vim script}表达式,并将返回结果作为替换string


    假如有下面这种情况,我们想要把

    afafafdafdeifahgf fafqedoafeiafaf
    aaaaa


    上面的aaaaa 替换成afafafdafdeifahgf,那我们要怎么办呢?这时候手动输入afafafdafdeifahgf可定很麻烦,而且还容易输错。这时候我们就可以使用寄存器来引用这个afafafdafdeifahgf
    方法如下

    1.%s/aaaaa/<C-r>0/g


    这里你需要把afafafdafdeifahgf内容首先复制到0寄存器里面去。这个方法有点不好的就是,如果你0寄存器里面的内容过长的话,会导致显示不全等。
    2.还是使用0寄存器,这次不同的是,我们完全可以通过命令行调用寄存器值的方法,来避免直接获取内容。

    %s/aaaaa/=@0/g


    g&-表示在全局范围内,执行上次的substetute

    我们有时候会交换两个单词,我们可以怎么实现呢?
    例如
    aaa bbb ccc ddd
    现在我们交换单词bbb ccc的位置
    方法一:
    剪切 粘贴 -可是模式下选中ccc以及前面的空格->d->光标停留在aaa的最后一个a上->p
    方法二:
    使用交换命令substetute

    %s//={"bbb":"ccc","ccc":"bbb"}[submatch(1)]/g



  • 相关阅读:
    web服务webserver
    java:Comparator比较器
    6递归
    5.二分查找 = 折半查找
    4.线性查找 = 顺序查找
    3选择排序
    2.冒泡排序----还是不懂,先记录下来
    1交换算法
    调试篇
    sql表合并,统计计算,生成总计
  • 原文地址:https://www.cnblogs.com/zhangshuli-1989/p/hq_16_01_03_02_10.html
Copyright © 2020-2023  润新知