在vim中搜索选择


107

编写C ++时,我将vim和vim插件用于Visual Studio。我经常发现自己想在函数中搜索字符串,例如,每次对的调用object->public_member.memberfunc()

我知道vim通过按*和提供了一种搜索单个单词的便捷方法#,它还可以使用无处不在的斜杠/命令搜索键入的字符串。尝试搜索较长字符串的所有实例(如上述实例)时,需要一段时间才能在之后重新输入/

有没有一种搜索选择的方法?例如,用突出显示v,然后用突出显示y,是否可以在其后粘贴/?有没有更简单的快捷方式?


Answers:


154

查看此Vim技巧:搜索视觉选择的文本

或者,您可以简单地用y选中所选文本并进入搜索模式/,然后可以使用Ctrl + R 0粘贴最后一个选中的文本。


4
@CMS。谢谢。大提示!使用:reg查看寄存器中的内容,然后使用cntl-R N获取寄存器N中的内容非常好!
Rob Wells

85

回答

  1. 提取您要搜索的文本
  2. q/p
  3. Enter

说明

q//除了在命令模式下之外,其工作方式与普通搜索类似,因此p实际上是“粘贴”而不是键入字符p。因此,上面的代码将复制您要搜索的文本并将其粘贴到搜索中。

有关更多详细信息,请键入 :help q/


4
我喜欢这个,因为我发现键入<ctrl-r>太不方便了。
1

优秀的!在中使用emacs evil-mode实际上可以工作,而被接受的答案却很糟糕(可能是由于使用了Ctrl密钥)。
eestrada '16

2
非常适合简单的字符串,但不能转义正则表达式特殊字符,如该其他答案的注释中所述
Bluu

1
而且,您甚至都不需要拉扯它。在视觉上选择它q/gvpgv代表最后的视觉选择...

1
@nwildner,q/gvp对我不起作用。你能澄清你的建议吗?
bam

38

使用q /代替/。(与q 相同)。现在,您可以通过命令和搜索历史记录进行VIM编辑!(有时请按Ctrl-N和Ctrl-P)。


10

我刚刚(通过出色的《Practical Vim》一书)了解到有一个插件。你可以找到在GitHub上插件

该插件可让您使用*和搜索视觉选择#


5
请注意,其他答案不会进行任何转义。使用这些方法,将不会在字面上搜索任何选定的元字符,具体取决于当前magic设置。这甚至可能使搜索失败,需要平衡的元字符。这里提到的插件将在搜索所选文本之前进行转义。
Kurt Hutchinson

1
它的工作原理,但不幸的是,你不能使用n去下一个找到的项目,而科里和CMS的方法并允许..
Ayrat

2

您实际上可以在视觉上选择文本,然后按*和#搜索下一个出现的内容...它的工作原理相同,唯一的警告是:

搜索时,所选内容中的空格会与任何空格匹配(搜索“ hello world”还将在行的末尾找到“ hello”,在下一行的开始处找到“ world”)。

http://vim.wikia.com/wiki/Search_for_visually_selected_text


2
对我来说,视觉上选择文本然后按*可以扩展我的视觉选择。
马丁jakubik

默认情况下,除非您将vimrc的映射内容放入页面中,否则无法进行默认设置
。– Ayrat
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.