如何在 Vim 中搜索选定的文本?

如何在 Vim 中搜索选定的文本?

我知道我可以使用/后跟正则表达式来搜索某些内容。我可以使用?向后搜索。我可以使用nN重复向前和向后搜索。

还有两个不错的快捷键:*#将搜索光标下的单词(向前/向后)。这非常有用!(还有g*g#变体)

但...一旦我使用可视模式 () 选择了文本v,我该如何要求 Vim 精确搜索该文本?快速浏览一下:help......嗯......没有帮助我。

答案1

如果已经选定了文本块,以下序列将执行您想要的操作:

  • y(将选定的文本拖放到"寄存器中,默认情况下)
  • /(进入搜索模式)
  • \ V)(可选,进入“非常无魔法”模式*)
  • Ctrl+ (从寄存器r "插入文本)"
  • Enter(从事!)

(*) “非常无魔法”模式将以下文本解释为纯文本而不是正则表达式。但请注意,\/仍然是特殊的,必须以其他方式处理。如果文本没有任何被视为特殊的字符,则可以跳过此步骤。

来源:Vim 使用技巧维基

答案2

您可以先提取突出显示的文本。然后

  • /

  • Ctrlr

  • "

它将粘贴您在 之后拖拽的内容/

答案3

我从来没有觉得需要这样的功能,但考虑到你可以在 Vim 上找到对任何功能的需求,我认为来自 Vim Wiki 应该有帮助:

vnoremap // y/\V<C-R>=escape(@",'/\')<CR><CR>

我没有测试过,但看代码,它似乎正是你要找的东西。

答案4

  • 视觉选择您的文本

  • y(默认情况下,将选定的文本拉取或复制到“注册表”中)

  • ?(进入搜索模式,向后搜索)

  • Ctrlr "(将“注册”中的内容粘贴到您的搜索中)

  • Enter(开始搜索)

在许多情况下,这都行得通/,因为使用?会进行反向搜索,默认情况下会转义斜线。然后您可以点击N继续向前搜索,n如果需要,也可以向后搜索。

此外,这是本页其他地方这些出色答案的变体,答案 1答案2

相关内容