Vim 搜索与正则速查

Vim 搜索与正则速查

🔹 基本搜索

  • /pattern → 向前搜索
  • ?pattern → 向后搜索
  • n → 重复上一次搜索(同方向)
  • N → 重复上一次搜索(反方向)

🔹 单字符搜索

  • f{char} → 向右查找字符
  • F{char} → 向左查找字符
  • t{char} → 向右查找字符前一位
  • T{char} → 向左查找字符后一位
  • ; → 重复上一次字符查找
  • , → 反向重复上一次字符查找

🔹 正则表达式基础

  • . → 匹配任意单个字符
  • * → 匹配零个或多个字符
  • \+ → 匹配一个或多个字符
  • \? → 匹配零个或一个字符
  • \{n,m} → 匹配 n 到 m 次

🔹 字符类与边界

  • [abc] → 匹配 abc
  • [^abc] → 匹配除 abc 之外的字符
  • [0-9] → 匹配数字
  • \d → 匹配数字(等价于 [0-9]
  • ^ → 匹配行首
  • $ → 匹配行尾
  • \< → 匹配单词开头
  • \> → 匹配单词结尾

🔹 分组与引用

  • \(...\) → 分组
  • \1, \2 → 引用分组内容
  • 示例:
    :%s/\(foo\)\(bar\)/\2\1/g
    
    → 把 foobar 替换成 barfoo

🔹 大小写控制

  • \c → 忽略大小写
  • \C → 强制区分大小写
  • 示例:
    /foo\c
    
    → 搜索 foo,忽略大小写

🔹 搜索高亮与取消

  • :set hlsearch → 开启搜索高亮
  • :set nohlsearch → 关闭搜索高亮
  • :noh → 临时取消高亮

🔹 实战案例

  • 搜索所有 IP 地址

    /\d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}
    
  • 搜索并替换日期格式

    :%s/\([0-9]\{4\}\)-\([0-9]\{2\}\)-\([0-9]\{2\}\)/\2\/\3\/\1/g
    

    → 把 YYYY-MM-DD 转换成 MM/DD/YYYY

  • 搜索空行

    /^$
    

🔹 总结

  • 基本搜索/, ?, n, N
  • 字符搜索f, F, t, T, ;, ,
  • 正则基础. * \+ \? \{n,m}
  • 字符类与边界[ ], ^, $, \<, \>
  • 分组与引用\(...\), \1, \2
  • 大小写控制\c, \C
  • 高亮控制:set hlsearch, :noh