如何在vim中编辑搜索文本?

5

我在网上搜索了一段时间,但是没有找到答案。

我的目标是在vim中编辑先前输入的搜索文本。

例如,假设我刚刚搜索了“FooClass”。然后我想搜索“FooMethod”,但我不想从头开始键入整个单词,而是想回退5次以删除“Class”,并在“Foo”后面只输入“Method”。

谢谢!

2个回答

14

按下 / 键,然后按下 Up 键,接着连续按下退格键五次。(假设已经设置了nocp)


除非你想学习一些花式技巧,否则现在请停止阅读...

如果你想变得更加聪明,还可以使用 Ctrl-R 来将内容加入到搜索框中 (例如把光标放在一个单词上,按下 /,然后按住 Ctrl 并按下 R,再按下 W,它会将光标下的单词放在搜索行上:类似于按下 *,但是可以编辑且不限于单词边界)。

如果你想变得非常聪明,可以使用所有vimscript的技巧来设置 @/ 为任何你想搜索的内容,然后按下 n

:let @/ = 'Foo' . 'Method'
n

也许比你想知道的还要多...

请参阅:

:help 'nocp'
:help c_CTRL-R
:help c_CTRL-R_CTRL-W
:help *
:help quote/
:help :let-@

Al -- 谢谢,里面有一些不错的小技巧. . . - Herbert Sitz
1
ctrl+r 的技巧听起来很酷,但出现 /<80>kb^[ 而不是光标下的单词,你有什么想法是什么原因引起的吗? - Marcus
2
可能是因为它是 Ctrl+R,Ctrl+W 而不是 Ctrl+R,W。这在 :help c_Ctrl-R 中有很好的文档记录。 - Drasill
是的,抱歉,我没有表达清楚。我应该说“按住ctrl键再按r键,然后按下w键”。我会编辑回答以使其更清晰。请注意,按下Ctrl-R,释放Ctrl并按下W将'w'寄存器的内容拖到命令行中(您可以使用“wyy”之类的方法将其放入其中)。 - DrAl

10

我发现编辑历史记录对于复杂的搜索是最好的。您可以使用q/编辑搜索历史记录。只需编辑要使用的行,然后按Enter执行该行。

还有一个伟大的vimcast,介绍使用这种技术来完善搜索模式。

:h q/

谢谢。我经常使用 q:。不知何故,我没有意识到相同的概念也适用于搜索。 - Herbert Sitz

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