Vim匹配

按模式匹配还是按原义匹配

Tip 72 Tune the Case Sensitivity of Search Patterns

调整搜索大小写敏感度

全局区分大小写

通过设置 :set ignorecase 选项即可开启忽略大小写。需要注意的是, 此设置会对 Vim 关键词补全有一定的影响。

每次搜索区分大小写

可以使用以下选项来覆盖默认的是否忽略大小写:

  • \c - 忽略大小写

  • \C - 区分大小写

每次搜索的时候都可以强制指定是否区分大小写。注意:在替换时\c标志位为手工确认。

启用智能大小写

Vim 提供了预测我们大小写敏感意图的 smartcase 选项, :set smartcase

启用此选项后进行搜索时,

  • 如果输入的全部是小写字母, 那么就不区分大小写;

  • 但只要包含大写字母, 那么就是大小写敏感的

Tip 73 Use the \v Pattern Switch for Regex Searches

按正则表达式查找时,使用 \v 模式开关 (开启字符的特殊含义)

我们可以使用 \v 模式(very magic search)开关规范所有的特殊符号, 启用之后, 除了下划线 _, 大小写字母, 和数字外, 所有的字符都具有特殊含义。

Tip 74 Use the \V Literal Switch for Verbatim Searches

按原义查找文本时,使用 \V 原义开关 (开启字符的特殊含义)

在正则表达式中使用的特殊字符,在按模式查找时用起来很顺手,但如果我们想

按原义查找文本时,它们就变成了阻碍。使用 very nomagic 原义开关,可以消除附

加在 .、 * 以及 ? 等大多数字符上的特殊含义。

使用原义开关 \V,即可激活 very nomagic 搜索模式

例如:搜索匹配“a.k.a.”字符串

/ \Va.k.a.

我们也可以使用转义的方式来消除字符的特殊含义。例如:

/ a.k.a.

使用 “\V” 会使得其后的模式中只有反斜杠有特殊的意义,显然更方便。

Tip 76 Stake the Boundaries of a Ward

界定单词的边界

定义一个搜索模型时, 指定单词的开始和结束位置可能很有用, Vim 给我们提供了单词分隔的选项。

例如执行搜索 /the 的时候, 是会把 these they their 等单词一起搜索出来的。

如果我们想只搜索 the 完整的单词, 而不需要包含 the 片段的词, 那么我们需要指定 词的边界。

在 \v 模式下(开启字符特殊含义), < 和 > 即代表词边界的符号. 所以我们可以使用 /\v 来达到我们的预期。

需要注意的是, 如果我们在 \v 模式下需要匹配 <> 字符, 那么就得加反斜杠来进行转义了。

Tip 78 Escape Problem Characters

转义问题字符

在 /V 纯文本模式下可以很容易的来进行纯文本的搜索匹配, 因为绝大部分的字符(如:. + *等)的特殊含义都被禁用了, 但是仍然有极少字符仍然有特殊的含义。

这时要用 \ 进行转义。

正向搜索转义斜杠 ‘/ ’

正向搜索时, 斜杠 / 字符被解释为终止符, 所有在此字符之后的内容都会被忽略,替换模式下在 \ 字符后添加标志位。

在 \v 和 \V 模式下, 如果要匹配 / 字符, 那么需要进行转义。

反向搜索转义问号 ‘ ? ’

当使用反向搜索的时候, 问号 ? 就是搜索的终止符。如果要匹配 ?号,需要转义 ?

每次都转义反斜杠 ‘ \ ’

\ 是需要进行转义的. 通常情况下, 反斜杠 \ 之后的那个字符表示被转义的特殊含义. 所以要匹配反斜杠字符的话就需要加转义, 也就是: \

而且,不管正向还是反向搜索,要匹配 \ 都是需要转义的。

终止符( / 或 ? )

Vim 允许在搜索字段终止符后面追加某些标志来调整搜索命令的行为

例如 /vim/e 将把光标放到高亮匹配位置的最后而不是前面