Vim中的查找/替换与正则表达式(1)

Vim中的查找/替换与正则表达式(1)

Vim中的查找和替换功能相当强大,不单可以查找指定字符串,还支持正则表达式,指定光标的位置,结合其他命令对查找结果进行操作...

1. 查找命令

Vim中提供的最基本的查找命令有'/'和'?',其中,'/'用于正向查找;'?'用于反向查找。在执行一次查找操作后,Vim会记住本次所使用的模式(pattern)和偏移量(±nlines)。下一次使用时,只需要指定查找的方向(和/或新的偏移量)即可。

1.1 '/'命令

'/'为正向查找命令,即从光标所在位置起向后/下查找。

命令 说明
/{pattern} 正向查找指定模式pattern
/{pattern}/[±]offset 正向查找指定模式pattern;找到后,以模式所在位置为基准,以指定偏移量移动光标
/ 使用上一次模式和偏移模式进行正向查找
//[nline] 使用上一次的模式和新指定的偏移量进行正向查找;如新偏移量为空,则缺省为0
1.2 '?'命令

'?'为反正查找命令,即从光标所在位置起向前/上查找。

命令 说明
?{pattern} 反向查找指定模式pattern
?{pattern}?[±]offset 反向查找指定模式pattern;找到后,以模式所在位置为基准,以指定偏移量移动光标
? 使用上一次模式和偏移模式进行反向查找
??[nline] 使用上一次的模式和新指定的偏移量进行反向查找;如新偏移量为空,则缺省为0
1.3 其他查找命令

除'/'和'?'外,Vim还提供了另外几条查找命令:

命令 说明
n 重复上一次查找操作
N 使用上一次查找操作的模式和偏移量,在相反方向上查找
* 将当前光标所在位置的单词(word①)作为搜索对象,正向查找它的下一处出处位置;如当前光标所在位置处不是单词,则使用其后出现的第一个单词作为搜索模式。查找将忽略大小写。
# 同'*',但查找方向为反向
g* 基本同'*',区别在于,'*'匹配的是单词(单词左右需要有空白定界符),而"g*"匹配的只是字符串。①
g# 基本同"#",区别同上
gd 局部声明跳转,常用于查找函数内变量的定义位置。搜索的关键字是光标所在位置处的关键字(变量名),搜索的范围是光标当前所在(或一个)函数(以不一定正确)。Vim会尝试从函数的开始处正向寻找此关键出现的第一处位置(并不一定总是变量的声明之处,而仅仅可能只是变量在函数中第一次出现的位置),如未找到,则光标保持在原位置不变。
gD 全局声明跳转,常用于查找全局变量的定义位置。类似于"gd",但查找的范围是当前文件
1gd 类同于"gd",但会忽略光标位置前结束的第一对'{'和'}'之间的代码
1gD 类同于"gD",同样会忽略光标位置前结束的第一对'{'和'}'之间的代码
Ctrl-C 中止当前正在执行的命令(搜索)
:noh[lsearch] 关闭"hlsearch"选项(高亮显示)。下一次搜索时,高度会再次打开

说明:Vim中的单词,指由英文大小写字母、数字和下划线构成,由特定边界(空格或制表符等空白符号,或行首/行尾标识)包围起来的字符串。使用'*'进行查找时,搜索的是完整的单词;而使用"g*"查找时,搜索的对象仅仅是构成单词的字符串(单词的边界并不在匹配范围之内)。举例来说,假定光标所在处单词为"b_c",则使用'*'进行查找时,并不会匹配"ab_cd"中的"b_c",而"g*"则会匹配成功。

1.4 查找中的偏移量

偏移量用来控制'/'或'?'命令找到匹配结果后,光标位置的移动。偏移量可以是行偏移量或行内列/字符偏移量。如未指定偏移量,则光标移动至匹配处的首字符位置。

表达式 说明
[±lines] 指定行偏移量。以匹配结果所在行为基准,'+'(缺省)指定向下移动/'-'指定向上移动,光标同时会定位到该行的第一列。lines可省略,缺省为1
e[±cols] 指定列偏移量。以匹配结果的最后一个字符位置(end)为基准,'+'(缺省)向右移动/'-'向左移动光标cols列。cols可省略,缺省为1
s[±cols] 指定列偏移量。以匹配结果的第一个字符位置(start)为基准,'+'(缺省)向右移动/'-'向左移动光标cols列。cols可省略,缺省为1
b[±cols] 同s偏移(begin,start)
1.5 其他命令与选项

清除Vim缓存的查找模式

:let @/ = ""

在查找命令之后,可以跟随一个';',再其后跟随另一条查找命令。如

/test/;/abc

/test/+1;/abc

回绕选项

  • warpscanws : 用来控制查找到文件尾后,是否回绕至文件首部继续搜索。此选项同时也控制着拼写检查命令"]s","]S","[s","[S"
  • nowarpscannows :不回绕开关
1.6 帮助

更多详细帮助信息,可上网搜索,或在Vim中使用以下命令获取在线帮助(":h"是":help"的简写形式):

:h pattern-searches
此条目发表在  othersUnix-like 分类目录,贴了   标签。将 固定链接加入收藏夹。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值