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

Dar*_*lar 30 search vim

每当您想在 vim 中搜索文本时,您都可以输入/您要查找的字符串。

但是,当字符串很长并且您想多次执行此操作时,是否有办法做到这一点而不必键入/andthisreallylongstring多次?

lam*_*988 61

完成搜索后按“n”,然后它会重复之前的操作(搜索)。

  • 此外,在点击 `/` 后点击向上箭头会回忆上一个搜索词 (15认同)
  • 此外,`N` 将转到上一个结果。 (12认同)
  • 此外,点击 `/` 和 Enter 将重复之前的搜索。点击`?` 并回车将向后重复之前的搜索。 (7认同)
  • 此外,`q/` 将显示一个包含所有最近搜索词的可编辑窗口。 (6认同)
  • `/Ctrl-F` 是 `q/` 的替代品,它可能更容易助记(ctrl-f == find)。和 q 一样,它也适用于命令模式。 (3认同)

Did*_*set 35

如果您搜索的字符串在光标下,则您可以键入*以向前#搜索或向后搜索。


小智 19

我通常如何搜索是这样的;

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

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

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

我也喜欢使用:

set ignorecase smartcase
Run Code Online (Sandbox Code Playgroud)

现在,如果搜索字符串中有大写字符,则它只会是区分大小写的搜索。


Jin*_*Jin 15

可以提高搜索效率的另外两个提示是set hlsearchset incsearch

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

  • set incsearch 打开增量搜索。

    摘自 :help incsearch

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

    没有incsearch,您的结果只会在按下<CR>您的搜索关键字后显示。

    例子:

    你要搜索 wildignore

    在此处输入图片说明

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

    在此处输入图片说明

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

    在此处输入图片说明


Mar*_*cin 13

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

  • 正在寻找这个。这是一个重要的说明,并且非常切题。 (3认同)

Gra*_*and 8

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

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


小智 7

只是在没有参数的情况下点击 / 对您不起作用吗?在我们所有的系统上,这会导致重复上次进行的任何搜索。


小智 6

您可以遵循一个很好的模式来搜索 yanked text。然后,如果您通过搜索以外的方式导航到该词,则您甚至不必单独键入该词。总之,如果您在要搜索的单词的第一个字符上:

v
e
y
/
Ctrl-r
0
Enter
Run Code Online (Sandbox Code Playgroud)

(然后继续下一个匹配 n 或 N)

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