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