【问题标题】:Search for string and add line in vi/vim在 vi/vim 中搜索字符串并添加行
【发布时间】:2012-02-20 01:55:19
【问题描述】:

我正在尝试编辑配置文件并希望在匹配特定字符串时添加特定的代码行(在换行符上)...我搜索的所有内容都会搜索和替换,我正在寻找用于搜索和追加...

【问题讨论】:

    标签: vim vi


    【解决方案1】:

    vim \r 是换行符。所以你可以做这样的事情

    %s/search string/&\rnew code/
    

    【讨论】:

    • 为了澄清。当使用替换符号时,它会附加吗?或者它是否包含您要替换的行,以便您可以在前面加上“%s/search string/\rnewcode&/”?
    • @Jaypal %s/^.*search string.*$/&\rnew code/ 可能会更好?你的可能会打破原来的路线。例如,如果该行是“search string=xyz”或“foosearch string=barsearch string”
    • \r 是替换字符串中的新行。在搜索模式中\n 是新行。
    • @VolatileStorm & 符号插入搜索命中
    【解决方案2】:

    这就是我会做的:

    :g/specific string/s/.*/&specific line of code
    

    g 命令获取包含specific string 的所有行,然后将s 替换命令应用于这些行。 s 命令将整行替换为其内容加上specific line of code

    HTH

    【讨论】:

      【解决方案3】:

      就我个人而言,我认为在这个问题上使用“:g”命令可能比“:s”更好。

      :g/key/norm owhat ever you want
      

      将制作文字:

      foo
      bar
      key
      foo2
      bar2
      key2
      blah
      

      到:

      foo
      bar
      key
      what ever you want
      foo2
      bar2
      key2
      what ever you want
      blah
      

      如果要在包含模式的行上方添加新行,只需将小“o”更改为“O”即可。

      【讨论】:

      • 优于norm oput ='whatever you want'
      • 如果您设置了autoindent 选项,norm onorm O 可能具有的优势是它们将使用与您正在搜索的行相同的缩进。
      猜你喜欢
      • 2011-11-01
      • 2013-05-02
      • 1970-01-01
      • 2018-12-13
      • 1970-01-01
      • 1970-01-01
      • 2014-06-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多