查找

/pattern            从光标处向文件尾搜索 pattern
?pattern            从光标处向文件头搜索 pattern
n                   向同一方向执行上一次搜索
N                   向相反方向执行上一次搜索
*                   向前搜索光标下的单词
#                   向后搜索光标下的单词

文档内查找

注意: nN 是有方向性的,若你之前通过 * 查找,则 n 会继续向文档尾方向查找,N 向文档首方向;反之,若你通过 # 查找,则 n 指向文档首,N 指向文档尾

行内查找

当前文档中有几个 “vim” 单词,你可以尝试用 *# 进行查找并感受 nN 的方向性。

上面的 “注意” 中有几个字符 “n”,你可以在那试试行内查找并感受下 ;, 的方向性。

匹配查找

vim 中可以使用 %()[]{} 进行匹配查找,当光标位于其中一个 符号上时,按下 %,光标会跳到与之匹配的另外一个符号上。

在下列文本中的 ()[]{} 字符上按 % 看看效果,连续多按几次。

(function(win, doc) {
    var n = ((1 + 2) * (3 + 4)) / 7;
    var a = [1, 2, 3, 4, 5, 6, 7];
    var f = function(b) {
        if(b) {
            return false;
        } else {
            return true;
        }
    };
})(window, document);

下一章将介绍文档的修改,在这之前先简单介绍一下 vim 的 buffer,简单理解 buffer 就是当前 vim session 的文件历史记录。

现在你的 buffer 中应该已经有两个文件了,你可以用 :buffers:ls 命令查看,看到 buffer 列表了吧,大概是这个样子的:

:ls
  1 #h   "file-one.md"                  line 47
  2 %a   "file-two.md"                  line 1
Press ENTER or type command to continue

接下来你可以尝试通过以下命令在文件缓存中进行跳转了

你也可以使用 :bdelete<N> 来删除所要关闭的缓冲区,缩写 :bd<N>

当然你也可以使用 :Ex 命令,选择 file-three.md 并打开,进入第三章

清除搜索高亮

前面提到的配置中,有一项是高亮全部搜索结果 :set hlsearch,其作用是当你执行 /?*# 搜索后高亮所有匹配结果。

如果你已经设置了这个选项,尝试执行 /set

看到效果了吧,搜索结果一目了然,但这有时候也是一种困扰,因为知道搜索结果后高亮就没用了,但高亮 本人并不这样认为,它会一直高亮下去,直到你用 :set nohlsearch 将其关闭。

但这样需要就打开,不需要就关闭也不是个办法,有没有更好的解决方案呢?当然!请看下面的终极答案:

再搜一个不存在的字符串

通常我用来清除搜索高亮的命令是 /lfw,一是因为 lfw 这个组合一般不会出现(不适用于 本文档…),二是这三个字母的组合按起来比较舒服,手指基本不需要怎么移动(你感受一下)。