> 文章列表 > 【vim进阶】VIM处理文本的替换(底行模式){ 格式 :{作用范围}s/{替换目标}/{替换内容}/{替换的标志} }

【vim进阶】VIM处理文本的替换(底行模式){ 格式 :{作用范围}s/{替换目标}/{替换内容}/{替换的标志} }

【vim进阶】VIM处理文本的替换(底行模式){ 格式 :{作用范围}s/{替换目标}/{替换内容}/{替换的标志} }

VIM 处理文本的替换(底行模式)

  • 语法格式:
:{作用范围}s/{替换目标}/{替换内容}/{替换的标志}
  • 作用范围分为当前行、全文、选区等等:

    • s:当前行替换

    • %s:全文替换

    • n1,n2s:指定行替换,替换n1:n2间所有行的目标。

    • ‘<,’>s:指定区域替换

  • 替换标志有g,i,I,c和空标志:

    • g:表示一次替换作用范围内所有的目标。

    • 空标志:只替换作用范围内,每行第一次出现的目标。

    • i:不敏感查找,不区分大小写

    • I:敏感查找,区分大小写。(默认状态)

    • c:表示替换前需进行确认。

  • 作用范围:

    • s

      :s/zempty/handsome/g
      

      将会把当前光标所在行的 zempty 替换成 handsome

    • %s

      :%s/zempty/handsome/g
      

      将会把全文中的 zempty 替换成 handsome

    • n1,n2s

      :n1,n2s/zempty/handsome/g
      

      这里的 n1 和 n2 值得是行号,将会替换掉 n1 到 n2 的所有 zempty 为 handsome.

    • ‘<,’>s

      选区,在可视模式下选择区域后输入:,VIM 会自动补全为 :'<,'>

      :'<,'>s/zempty/handsome/g
      

      这个操作咋一看起来有点懵逼,这个操作是可视模式 (Visual-mode) 下选区中的替换操作,可视模式下输入会自动补全 :'<,'> 这个是可视范围下的操作范围,类似于 % 和 n1,n2,代表操作的文本范围,上面的例子就是替换掉可视区域的 zempty 为 handsome。

  • 替换的标志

    • 上文中命令结尾的 g 即是替换标志之一,表示全局 global 替换(即替换目标的所有出现)。 还有很多其他有用的替换标志:

    • 空替换标志表示只替换作用范围内,每行第一次出现的目标。

      :s/zempty/handsome
      

      作用于当前行,仅仅替换第一次匹配 zempty 的地方为handsome 。

      :%s/zempty/handsome
      

      替换掉文件中所有行第一次出现 zempty 的地方为 handsome 。

    • i 表示大小写不敏感查找,I 表示大小写敏感:

      :%s/zempty/handsome/i
      

      替换掉所有行第一个出现 zempty (不区分大小写) 为 handsome 。

      :%s/zempty/handsome/gi
      

      替换掉所有行出现 zempty (不区分大小写) 为 handsome 。

    • c 表示需要确认,例如全局查找"zempty"替换为"handsome"并且需要确认:

      :%s/zempty/handsome/gc