在Vim中搜索先前搜索到的行的结果集?

时间:2014-08-03 02:13:55

标签: vim

有没有办法只搜索与/pattern之前搜索中的模式匹配的行?这些场景是第一批搜索提供商的一些超级结果,我想在其中导航子类别。

2 个答案:

答案 0 :(得分:1)

您无法在不连续范围内执行内置命令。在我看来,你最好的选择是做一些事情:

:vim firstpattern % | cw

然后使用其中一个this question的答案,使用secondpattern过滤结果。

答案 1 :(得分:1)

我无法找到任何内置的vim语法来搜索搜索。因此,这篇文章尝试在vim中提供一些可用于实现目标的变通方法。

  1. 如果您尝试在同一行中找到两个模式,则可以使用注释中指定的行:/.*<pattern1>\&.*<pattern2>.*是必要的,因此它不会在开始时尝试匹配。 \&基本上表示匹配两种模式。
  2. 您可以通过/<pattern1>搜索模式,然后键入/并按up箭头键以显示以前使用的模式。然后,您可以添加到此先前的模式(此变通方法没有太多特别之处)。
  3. 这是对romainl的非常相似的回应,但是如果你想使用外部命令(会更快):grep <firstpattern> % | copen。这将使用您的外部命令(Vim Quickfix Doc&amp; Vim Grep Wiki)执行grep。另外,作为一般说明,%符号为cmdline special characterVim Cmdline Special Character Doc),copen命令会打开quickfix列表。

    注意:您可能需要在管道外运行copen命令。至少,当我尝试时,我无法按照我想要的方式使管道工作。

  4. Romainl的回复(使用quickfix列表)可能是您获得交互式解决方案的最佳方式。如果您觉得需要额外的功能,可以尝试在romainl链接中实现额外的开源代码。

    这些都是我现在头脑中的所有想法。如果他们找到你好,请告诉我,如果没有,那么我会继续搜索。