搜索命令`//`如何在Vim中工作?

时间:2010-10-21 05:48:10

标签: search vim keyboard-shortcuts

搜索完成后,如果点击//,您似乎会得到下一个结果。这与n有什么不同?你应该如何使用它? //e匹配什么,//还有哪些其他选项?

3 个答案:

答案 0 :(得分:16)

搜索命令的格式如下:

/pattern/offset<cr>

如果省略pattern部分,搜索将查找搜索到的最后一个模式。如果省略偏移量,则不应用偏移量。一旦找到pattern项,偏移量基本上就是对光标做的事情。

大多数vi位用户都熟悉没有偏移的变体,/pax<cr>和重复上次搜索/<cr>,相当于n

在您的具体示例中,//<cr>/<cr>相同,这意味着重复上一次搜索并且不应用偏移量。

另一方面,//e<cr>表示重复上一次搜索并将光标移动到找到项目的末尾。补偿是:

[num]         [num] lines downwards, in column 1
+[num]        [num] lines downwards, in column 1
-[num]        [num] lines upwards, in column 1
e[+num]       [num] characters to the right of the end of the match
e[-num]       [num] characters to the left of the end of the match
s[+num]       [num] characters to the right of the start of the match
s[-num]       [num] characters to the left of the start of the match
b[+num]       [num] identical to s[+num] above (mnemonic: begin)
b[-num]       [num] identical to s[-num] above (mnemonic: begin)
;{pattern}    perform another search, see |//;|

没有num的加号或减号使用1

答案 1 :(得分:9)

//的一个很好的功能是你可以将它与s命令一起使用。因此,如果您最初搜索/Foo然后决定将其替换为Bar,则可以在不重复此模式的情况下执行此操作。只需:%s//Bar/g

显然,如果模式稍微复杂一点,这会更有用。

答案 2 :(得分:4)

//<CR>表示重复搜索最后一个没有偏移的模式。

//e<CR>表示重复搜索最后一个模式,但在比赛结束时登陆。

n/<CR>相同,因为它使用最后一个模式最后一个偏移量,但n保留最后一个方向{{1}总是找到下一个匹配。

有关这些命令及其选项的详尽说明,请参阅/:h last-pattern