九幽泉下,是你最好的归宿
搜索#
Vim的搜索分为两种,在一般模式下通过 /
和 ?
触发:
- Forward(向前搜索):
/pattern
- Backforward(向后搜索):
?pattern
其中的搜索内容 pattern
支持正则,常见特殊字符:
.
:匹配任意单个字符+
:匹配前一个字符的一次或多次重复*
:匹配前一个字符的零次或多次重复^
:匹配行首$
:匹配行尾[]
:匹配方括号内的任意一个字符(如[abc]
)\d
:匹配数字(等同于[0-9]
)\s
:匹配空白字符(空格、制表符等)\w
:匹配单词字符(字母、数字、下划线)
如果要搜索特殊字符,那就需要加 /
转义。
匹配成功的所有搜索结果会高亮,在一般模式下可通过 n
和 N
进行跳转:
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