Vim:您如何有效地搜索文本?


30

每当您要在vim中搜索文本时,都将键入/,然后键入您要查找的字符串。

但是,当字符串很长且您想多次执行此操作时,是否有一种方法可以使您不必多次键入/andthisreallylongstring


12
我建议您简短地阅读Vim备忘单Vim技巧 -您可能会发现许多其他方法来充分利用vim。
RedGrittyBrick 2011年

Protip:有些Linux的文本编辑器不需要花费数周的时间就可以使用。
BlueRaja-Danny Pflughoeft 2011年

4
@BlueRaja:不确定这是进行编辑大战的好地方。同样对于操作系统大战,也有用于Windows或Mac OS的漂亮且用户友好的文本编辑器。不得不研究如何使用编辑器来提高效率,最终可能会使您比坚持基本功能更高效。
Benoit

Answers:


61

完成搜索后,按“ n”,然后将重复上一个操作(搜索)。


12
此外,N将转到以前的结果。

15
此外,在点击后再点击向上箭头/会记得最后一个搜索字词
-bastibe

6
同时q/还会显示一个包含所有最近搜索词的可编辑窗口。
UncleZeiv 2011年

7
同样,点击/和Enter将重复上一次搜索。点击?并回车将向后重复先前的搜索。
安迪·莱斯特

3
/Ctrl-F是一种替代方法,q/它可能更容易记忆(ctrl-f == find)。与q一样,它也适用于命令模式。
idbrii 2011年


19

我通常的搜索方式类似于:

  1. 按 '/'
  2. 输入搜索词
  3. 按Enter
  4. 使用“ n”和“ N”在搜索中向前和向后导航。

Vim会保留您的搜索历史记录,因此,如果您需要以前的搜索,可以按'/'并使用UP和DOWN键或<Ctrl-P> <Ctrl-N>浏览搜索历史。

您还可以使用“?” 而不是'/'向后搜索。

我也喜欢使用:

set ignorecase smartcase

现在,只有在搜索字符串中包含大写字符的情况下,它才是区分大小写的搜索。


15

两个额外的技巧,可以让你更高效的搜索是set hlsearchset incsearch

  • set hlsearch,突出显示您的搜索结果。键入:noh以在不再需要它们时将其关闭。

  • set incsearch 打开增量搜索。

    摘自 :help incsearch

    键入搜索命令时,显示到目前为止已键入的模式在哪里匹配。匹配的字符串突出显示。如果该模式无效或找不到,则不显示任何内容。屏幕将经常更新,这仅在快速终端上有用。

    如果不使用incsearch,则仅在按下<CR>搜索关键字后才会显示结果。

    例:

    您要搜寻 wildignore

    在此处输入图片说明

    您键入/wild,第一个匹配项将自动突出显示。

    在此处输入图片说明

    然后输入i,继续进行下一个正确的匹配。

    在此处输入图片说明


13

另一个尚未覆盖的提示:按字符q,然后按/,将为您提供以前的搜索词的列表。您可以像编辑文档中的任何其他行一样编辑它们,然后按Enter键以将其重新用于新搜索。


3
在寻找这个。这是一个重要的注意事项,而且非常主题化。
cincodenada 2011年

8

按下/开始搜索后,您可以向上箭头滚动浏览搜索历史记录。

您可以输入正则表达式来避免键入整个搜索词: and.*longstring



6

您可以按照一种不错的模式来搜索被选中的文本。如果您已通过搜索以外的其他方式导航至该单词,那么您甚至不必自己输入单词。总之,如果您要搜索的单词的第一个字符是:

v
e
y
/
Ctrl-r
0
Enter

(然后继续用n或N进行下一场比赛)

但是*(或#)与所有这些命令完成的功能几乎相同。唯一的区别是您可以灵活指定所指定的单词数(可以选择任意数量,而不是e到单词末尾,例如9l)



1

编程时很多时间我想搜索aVeryLongVariableNameInTheProgram

在vim中,您可以很容易地将文本拉入缓冲区/寄存器,然后搜索它:

  • 将光标放在单词的第一个字符上
  • "Byw将文本拉到aVeryLongVariableNameInTheProgram缓冲区B中(选择您最喜欢的语言,我用过B)
  • /^RB (斜杠,Ctrl-R,B)以将缓冲区B粘贴到搜索行上

当然,您也可以拉至行尾等,而不是拉一个单词-我只是一直都在使用上述顺序。


1

另外,您可以通过按Ctrl+ R,然后按寄存器名称,例如/ Ctrl+ R0 ,将任何寄存器的内容粘贴到搜索提示中Enter


我想你一个字。
dotancohen 2013年

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.