Vim基础篇(五)——搜索操作

前言:
  代码编辑少不了搜索功能,而Vim的搜索功能十分强大。

1 *和#查找

  • [N]*正向查找(向下查找)第N次出现当前光标所处字符串的地方,将光标跳转到此处。
  • [#]反向查找(向上查找)第N次出现当前光标所处字符串的地方,将光标跳转到此处。

  通过指令:noh可以取消搜索字符串的高亮。
  查找后被查找的字符串会被高亮,此时可以使用nN在搜索的字符之间跳转。

  • [N]n向下跳转到第N个搜索字符的字符串首。
  • [N]N向上跳转到第N个搜索字符的字符串首。

2 /和?查找

  向下查找第N次出现“pattern”的地方。N在输入/或?之前输入。

1
/{pattern}[/]<CR>
1
?{pattern}[?]<CR>

  向下查找第N次出现“pattern”的地方,“offset”为在匹配处的偏移。N在输入/或?之前输入。

1
/{pattern}/{offset}[/]<CR>
1
?{pattern}?{offset}[?]<CR>

  向下查找第N次出现上次模式的地方。N在输入/或?之前输入。

1
/<CR>
1
?<CR>

  向下查找第N次出现上次模式的地方,“offset”为在匹配处的偏移。N在输入/或?之前输入。

1
//{offset}[/]<CR>
1
??{offset}[?]<CR>

  关于上面的”offset“用法比较灵活,介绍如下:

形式 含义
[+][N] 往下偏移N行,N缺省值为0
-[N] 往上偏移N行,N缺省值为0
s[+][N] 匹配字符串的首字符起,往右移动N个字符,N缺省值为0
s-[N] 匹配字符串的首字符起,往左移动N个字符,N缺省值为0
b[+][N] 等同于s[+][N]。匹配字符串的尾字符起,往右移动N个字符,N缺省值为0
b-[N] 等同于s-[N]。匹配字符串的尾字符起,往左移动N个字符,N缺省值为0
e[+][N] 匹配字符串的尾字符起,往右移动N个字符,N缺省值为0
e-[N] 匹配字符串的尾字符起,往左移动N个字符,N缺省值为0

  还可以使用;/?查找进行多次组合查找。
  例如有以下文本内容:

1
2
3
4
1
2
3
2

  上面文本中有两个2,如果我想找3后面的2,而不是1后面的2,我可以这样进行搜索一步实现:

1
/3/;2/<CR>

  第一步先找到字符3,然后继续往下找字符2,这样就实现了找3后面的2。