Vim增量搜索下一个结果

15

我已启用 incsearch hlsearch 功能。

所以我按/进入搜索模式。

然后我输入想要搜索的文本,它会找到我输入的文本的第一个出现位置。

然后我想要跳转到下一个匹配项,而不退出搜索模式,这样我就可以在不必退出正常模式、按n键,再次按下/键返回搜索模式的情况下,继续完善我的搜索文本。

如果这是可能的,我该如何实现?

4个回答

13

我找到的最好的方法如下:

使用/blah搜索您的模式

然后,按n或?直到您看到结果为止...

然后回到/并按CTRL-r /

这将带回您上次搜索的模式,以便您可以在那里继续输入更多文本...

我相信您可以将该组合键重新映射到某个键,以便您可以快速返回带有已输入模式的搜索。


3
当你重新进入搜索模式时,只需按“向上”按钮即可滚动浏览你的历史记录。 - ezdazuzena
1
或使用“q /”进入搜索历史记录窗口。 - Benoit
@ezdazuzena <C-p><Up>更容易输入。 - ZyX
@ZyX:这不就是自动完成吗? - ezdazuzena

8

我在freenode.net的#vim irc频道中,感谢bwana147的帮助,找到了一种解决方法。

:cnoremap <c-n> <CR>n/<c-p>

搜索模式下键入文本,然后按下ctrl-n,可以在不退出搜索模式的情况下跳转到下一个匹配项。


由于我无法接受我的答案,我将接受vmpstr,它基本上是在此cmap组合中使用的相同技术的解释。 - Troydm
我稍微改进了一下(使用cnoremap<c-g>,因为我已经为自动完成映射了<c-p>/<c-n>)::cnoremap <c-g> <CR>n/<c-p>。不幸的是,这个尝试会为每一步添加一个条目到跳转列表中,在incsearch mode<CR>之前的中间步骤并没有这样做。 - blueyed

3
我已启用incsearchhlsearch。因此,我按/进入搜索模式。然后,我输入要搜索的文本,它会找到第一个出现的文本。
到这里还好...
在这里,我不太明白你在问什么。
然后,我想跳转到我输入的文本的下一个出现位置,而无需退出搜索模式。这可以通过按n来完成。
这样,我就可以在不必退出到正常模式的情况下,稍后完善我的搜索文本,然后按n,再次按/返回搜索模式。
我有点迷失了...这不是incsearch所能实现的行为吗?

在incsearch模式下,当您搜索时,它会跳转到下一个匹配项的位置。他希望能够在不必按回车和按“n”的情况下找到一种方式来跳转到下一个匹配项,而无需离开搜索模式。 - Dhruva Sagar
@DhruvaSagar - 我想我明白了;更多的Emacs行为,可以这么说。 - Rook
@Idigas,我不太确定这一点,但我认为他想要的是不可能实现的。 - Dhruva Sagar

0

使用Ctrl-g或Ctrl-t进行增量搜索。当您想要搜索某些内容时,请键入/后跟内容,然后按Ctrl-t,这将使光标跳转到第一个匹配项,但您仍处于搜索模式中,您可以添加“thing”以继续搜索,搜索模式将变为/something。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接