查找
/pattern 从光标处向文件尾搜索 pattern
?pattern 从光标处向文件头搜索 pattern
n 向同一方向执行上一次搜索
N 向相反方向执行上一次搜索
* 向前搜索光标下的单词
# 向后搜索光标下的单词
文档内查找
*
向后查找光标当前所在单词#
向前查找光标当前所在单词/<search>
向后查找指定字符串?<search>
向前查找指定字符串n
继续查找下一个N
继续查找上一个
注意: n
和 N
是有方向性的,若你之前通过 *
查找,则 n
会继续向文档尾方向查找,N
向文档首方向;反之,若你通过 #
查找,则 n
指向文档首,N
指向文档尾
行内查找
f<X>
当前行内向行尾方向查找并定位到字符X
t<X>
当前行内向行尾方向查找并定位到字符X
之前F<X>
当前行内向行首方向查找并定位到字符X
T<X>
当前行内向行首方向查找并定位到字符X
之后;
继续向当前方向查找下一个字符,
向当前相反方向查找下一个字符
当前文档中有几个 “vim” 单词,你可以尝试用
*
和#
进行查找并感受n
和N
的方向性。上面的 “注意” 中有几个字符 “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
接下来你可以尝试通过以下命令在文件缓存中进行跳转了
:bn
打开缓存中下一个文件:bp
打开缓存中上一个文件:b<N>
打开缓存中第 N 个文件你也可以使用
:bdelete<N>
来删除所要关闭的缓冲区,缩写:bd<N>
。当然你也可以使用
:Ex
命令,选择 file-three.md 并打开,进入第三章。
清除搜索高亮
前面提到的配置中,有一项是高亮全部搜索结果 :set hlsearch
,其作用是当你执行 /
、?
、*
或 #
搜索后高亮所有匹配结果。
如果你已经设置了这个选项,尝试执行
/set
看到效果了吧,搜索结果一目了然,但这有时候也是一种困扰,因为知道搜索结果后高亮就没用了,但高亮
本人并不这样认为,它会一直高亮下去,直到你用 :set nohlsearch
将其关闭。
但这样需要就打开,不需要就关闭也不是个办法,有没有更好的解决方案呢?当然!请看下面的终极答案:
再搜一个不存在的字符串
通常我用来清除搜索高亮的命令是 /lfw
,一是因为 lfw
这个组合一般不会出现(不适用于
本文档…),二是这三个字母的组合按起来比较舒服,手指基本不需要怎么移动(你感受一下)。