跳过正文
  1. Documentation/

【Vim】搜索与替换

·704 字·2 分钟·
Mr. Tree
工具 Vim
作者
Mr. Tree
村口树哥
目录
Vim高手之路 - 这篇文章属于一个选集。
§ 1: 本文
九幽泉下,是你最好的归宿

搜索
#

Vim的搜索分为两种,在一般模式下通过 /? 触发:

  • Forward(向前搜索):/pattern
  • Backforward(向后搜索):?pattern

其中的搜索内容 pattern 支持正则,常见特殊字符:

  • .:匹配任意单个字符
  • +:匹配前一个字符的一次或多次重复
  • *:匹配前一个字符的零次或多次重复
  • ^:匹配行首
  • $:匹配行尾
  • []:匹配方括号内的任意一个字符(如[abc]
  • \d:匹配数字(等同于[0-9]
  • \s:匹配空白字符(空格、制表符等)
  • \w:匹配单词字符(字母、数字、下划线)

如果要搜索特殊字符,那就需要加 / 转义。

匹配成功的所有搜索结果会高亮,在一般模式下可通过 nN 进行跳转:

  • n 跳转到搜索顺序的下一个结果
  • N 跳转到相反搜索顺序的下一个结果

命令行模式下可使用:noh移除搜索结果的高亮。

替换
#

Vim的替换需要进入命令行模式,语法为 :[%或beg, end]s/old/new/[gc] ,组成如下:

  • : 进入命令行模式
  • 替换范围(可选)
    • 默认范围是光标所在行
    • % 表示全文
    • beg,end 表示左闭右闭的行数范围
  • s , substitute 替换
  • 旧内容old
  • 新内容new
  • 替换选项(可选):
    • 默认情况是 每行只替换匹配的第一个
    • g 表示全局替换,替换所有的old
    • c 表示确认替换,每次替换时询问确认
      • y yes,进行替换
      • n no,不进行替换
      • a all,后续全部替换
      • q quit,退出替换

举几个栗子,设置替换范围行数:

# 替换前
hasCJKLanguage = false  # 14 line
buildDrafts = false false  # 15 line
buildFuture = false  # 16 line

# 替换命令
:15,16s/false/true

# 替换后
hasCJKLanguage = false
buildDrafts = true false
buildFuture = true

设置替换范围全文:

# 替换前
hasCJKLanguage = false  # 14 line
buildDrafts = false false  # 15 line
buildFuture = false  # 16 line

# 替换命令
:%s/false/true

# 替换后
hasCJKLanguage = true
buildDrafts = true false
buildFuture = true

替换选项 g 的使用:

# 替换前
hasCJKLanguage = false  # 14 line
buildDrafts = false false  # 15 line
buildFuture = false  # 16 line

# 替换命令
:%s/false/true/g

# 替换后
hasCJKLanguage = true
buildDrafts = true true
buildFuture = true
Vim高手之路 - 这篇文章属于一个选集。
§ 1: 本文

相关文章

【Vim】文本对象操作
·257 字·1 分钟
Mr. Tree
工具 Vim
Series
·228 字·2 分钟
Mr. Tree
Dummy Second Author
Series Docs
Welcome to Blowfish
·595 字·3 分钟
Mr. Tree
New Docs