例子段落

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
Two hearts ......
Two hearts ......
Two hearts ......

I can't stop the
Honey, this is my last
I said, can't stop the

//this line is conjured Twohearts oneTwothere

two hearts beat as one
two hearts beat as one
two hearts

Two Hearts Beat As One

查找当前词 * #

向前查找当前词 *

在普通(命令)模式下,将cusor置于某单词下,输入*将跳转到下一个相同单词,大小写有关

以上面个歌词为例, 假设当前光标位于第二行的首个单词Two中间的w字符上
假设想查找定位到下一个Two单词,只要在命令模式下输入 * 即可
再次输入 * ,跳转到第三行的Two上,

大小写相关哦,再次输入 * ,会跳转到最后一行的Two上,跳过中间几行的two 如果需要忽略大小写, 可以设置

1
2
3
4
5
忽略大小写
:set ignorecase
再次区分大小写
:set noignorecase

向后查找当前词 #

假设当前cursor位于最后一行Two上,
输入#, cursor会跳转到第三行的Two(假设区分大小写)

注意* #, 匹配整个单词,词首到词尾. Two, 输入# *, 不会匹配中间的Twohearts 如果需要部分匹配,可以使用 g* 或者 g#, 那么就会匹配中间的Twohearts, 或者形如oneTwothere的词

输入 数字* 也同样, 比如2*, 3#

简单查找 /String ?String

正向查找 /String

在命令模式输入 /String, 会查询String,
输入enter以后,光标会移动到下一个匹配的String

之后输入n会继续查找下一个, 输入N 反向查找下一个 上面的例子中查找小写的two,/twoEnter,然后输入n,N试试看

数字+n(N), 会跳转到第n个匹配的String,
如果数字太大,会循环查找

如果想查找文本第一个匹配,命令是 ggn 想过想查找最后一个匹配,命令为GN

反向查找 ?String

?String 是反向查找,?String输入enter后, 输入n(N)查找方向与/String也相反 ?String Enter + n 是反向查找 N是正向查找

查找完整单词

在简单查找中,输入/Two, 可以找到Two,也可能找到 Twohearts, oneTwoThere
如果想匹配词头词尾可以输入 __ < 和或> __ 比如Two开头的, /<Two, 那么会匹配Twohearts, 不会匹配oneTwoThere
匹配Two单词, /<Two>, 那么只会匹配单词Two, 不会匹配Twohears,oneTwoThere

匹配行首和行尾

^ 匹配行首 /^Two 仅仅匹配在行首的Two
$ 匹配行尾 /Two$ 仅仅匹配在行尾的TWo

匹配任意单个字符

“.”字符匹配任何字符, /t.o 匹配头一个字母是t,中间是任何字符,然后是字母o的单词

注意如果要匹配特殊字符如.本身,可以使用反斜杠.

标记

一般情况下,每次执行一个将光标移动到__本行之外__的命令,称为一次"跳转"
包括G gg 查询使用的/? nN,但是不靠扩fx tx查找命令和w,e,b等词移动命令

Vim会记住您是从什么地方跳转过去的. 要回去原来的地方,使用命令'' 或者`` 再次使用这两个单引号或者反引号,会跳去原来地方.

CTRL-O(older)跳转到一个"较老的"地方 CTRL-I跳转到一个"较新"的地方

自定义标记

命令m 可以在文本中放置自定义的标记
例如ma 用a标记当前光标位置,可以使用a-z26个字母标记
需要跳转到自定义标记使用’a或’b跳转到标记行的行首 有些特殊标记 ' 跳转前的光标位置 " 最后编辑的光标位置 [ 最后修改的开始位置 ] 最后修改的结束位置

‘‘就是上面的命令 ‘"" 跳转到最后标记的光标位置

TODO