Skip to content
On this page

百发百中:掌握搜索命令

有一天,你终于厌倦了 h j k l 在字里行间移动,厌倦了 w b e屎山 代码中半天跳不到头;你在想,有没有一种方法,可以像东风-41导弹一样指哪打哪,快速去到 同事们写的垃圾 代码中;

恭喜你,你找到了!

今天,我们就来学习搜索命令,打破你的困境。

行内搜索

通常我们在一行代码中时,有可能需要这里编辑一下那里编辑一下,虽然之前讲过的移动光标的命令也基本够用了,但可能在某些情况下,代码比较长之类的,可能用行内搜索命令是不错的方式。

  • f + 字符:自左往右移动光标到下一个匹配的字符中
  • F + 字符:自右往左移动光标到下一个匹配的字符中
  • t + 字符:自左往右移动光标到下一个匹配的字符的前一个字符中
  • T + 字符:自右往左移动光标到下一个匹配的字符的后一个字符中
  • ;:重复执行上一个搜索命令
  • ,: 与上一个命令方向相反地执行上一个搜索命令

使用技巧

普通移动光标的时候使用 f F,配合 c d v 这些操作时使用 t T,如:

this is a simple easy vim tutorial.

如果我们光标在句首,需要跳到 easy 这个单词的字母 e,则直接 fe;即可(因为 fe 会跳到 simple 的 e,所以需要用 ; 再执行一遍 fe);

而假如我们需要删除 easy 单词前的内容,则可以使用 d2te ,则句子就变成:

easy vim tutorial.

这里的 2te 是指使用 te 这个指令时的第二个结果,因为上面那句话有两个字母 e,我们要匹配第二个,所以在这个指令前加上数字 2,指令 f 也同理。

全局搜索

在日常开发中,我们用得最多的搜索其实是全局搜索,尤其是在查看一些变量、函数调用情况的时候,而 vim 也提供了方便的全局搜索:

  • 从光标位置向下查找:/ + 字符 + enter
  • 从光标位置向上查找:? + 字符 + enter
  • 查看搜索历史:/ + 上下方向键

使用技巧

使用 / ? 查找时不需要输入要搜索的完整文本,就输入前面几个字符就可以了;而且这两个搜索命令是大写不敏感的,比如输入 /ula,都可以匹配到 ULAula;这种特性下,如果我们搜索一个变量,如 text,会匹配到 TextTEXT` 等单词,所以这两个命令是模糊搜索。

在大多数情况下,其实我们更需要的是精确搜索,这时我们可以把光标移到我们需要搜索的单词上,然后按下以下命令:

  • 向上查找:#
  • 向下查找:*

这样就可以愉快地搜索了;我们还可以使用:

  • n:跳到下一个结果
  • N:跳到上一个结果

然后就可以快速查看搜索的结果了,完全不输 vscode 自带的搜索。