菜鸟笔记
提升您的技术认知

vim 查找与替换-ag真人游戏

阅读 : 134

文本处理的过程中,经常需要进行快速查找和文本替换,在vim中通过命令可以快速的实现文本的查找及替换,对于文本处理效率非常有用。

以下文vim中查找、替换的命令介绍,请查看。

查找

  • /something: 在后面的文本中查找something。
  • ?something: 在前面的文本中查找something。
  • /pattern/ number: 将光标停在包含pattern的行后面第number行上。
  • /pattern/-number: 将光标停在包含pattern的行前面第number行上。
  • n: 向后查找下一个。
  • n: 向前查找下一个。
  • 可以用grepvimgrep查找一个模式都在哪些地方出现过,

    其中:grep是调用外部的grep程序,而:vimgrep是vim自己的查找算法。

    用法为: :vim[grep]/pattern/[g] [j] files

    g的含义是如果一个模式在一行中多次出现,则这一行也在结果中多次出现。

    j的含义是grep结束后,结果停在第j项,默认是停在第一项。

    vimgrep前面可以加数字限定搜索结果的上限,如

    :1vim/pattern/ % 只查找那个模式在本文件中的第一个出现。

    其实vimgrep在读纯文本电子书时特别有用,可以生成导航的目录。

    比如电子书中每一节的标题形式为:n. xxxx。你就可以这样:

    :vim/^d{1,}./ %

    然后用:cw:copen查看结果,可以用c-w h把quickfix窗口移到左侧,

    就更像个目录了。

    替换

    • :s/old/new - 用new替换当前行第一个old。
    • :s/old/new/g - 用new替换当前行所有的old。
    • :n1,n2s/old/new/g - 用new替换文件n1行到n2行所有的old。
    • :%s/old/new/g - 用new替换文件中所有的old。
    • :%s/^/xxx/g - 在每一行的行首插入xxx,^表示行首。
    • :%s//xxx/g−在每一行的行尾插入xxx,/xxx/g−在每一行的行尾插入xxx,表示行尾。
    • 所有替换命令末尾加上c,每个替换都将需要用户确认。 如:%s/old/new/gc,加上i则忽略大小写(ignore)。

    还有一种比替换更灵活的方式,它是匹配到某个模式后执行某种命令,

    语法为 :[range]g/pattern/command

    例如 :%g/^ xyz/normal dd

    表示对于以一个空格和xyz开头的行执行normal模式下的dd命令。

    关于range的规定为:

    • 如果不指定range,则表示当前行。
    • m,n: 从m行到n行。
    • 0: 最开始一行(可能是这样)。
    • $: 最后一行
    • .: 当前行
    • %: 所有行

    正则表达式

    高级的查找替换就要用到正则表达式。

    • \d: 表示十进制数(我猜的)
    • \s: 表示空格
    • \s: 非空字符
    • \a: 英文字母
    • |: 表示 或
    • .: 表示.
    • {m,n}: 表示m到n个字符。
    • {m,}: 表示m到无限多个字符。
    • **: 当前目录下的所有子目录。

    通过命令:help pattern可以得到更多帮助信息。

    网站地图