隐藏Vim中所有(不)匹配的行


Answers:


107

您知道该:global命令吗?这是您想要的吗?

:g/ERROR

相反:

:g!/Error

或等效地:

:v/Error

19
这不是很好。滚动到底部后,命令将完成,并且所有内容再次显示。它并没有真正隐藏那些内容。
戡黎

@KanLi点击g<以再次查看,或者@:您是否没有运行和命令。
D. Ben Knoble

53

取决于您的用例的另一种方法是使用vimgrep及其在quickfix中的结果。您可以执行以下操作:

:vimgrep pattern %将搜索当前文件,并带您到第一个搜索结果。更重要的是,它还将结果放入“快速修复列表”中。

:copen然后将在单独的quickfix窗口中打开quickfix列表。因此,您将拥有一个单独的窗口,其中包含上一个vimgrep的所有行。然后,您可以在quickfix-window内单击Enter或双击一行以跳到原始文件中的相应行。

:colder将使您返回到较早的quickfix列表(较早的vimgrep结果)。和:cnewer期待更新的搜索结果。

请注意,快速:make修复列表在运行时也会更新(这就是为什么将其称为快速修复来修复错误)的原因。因此,快速修复列表还有一个替代方案,称为“位置列表”。要使用它,可以使用:lvimgrep,然后使用l前缀命令而不是c前缀命令- :lopen:lolder:lnewer

当然,您还可以做更多的事情。看到:help quickfix以获取更多信息。

PS,您说过,您不需要删除行然后撤消它们的方法。但是,既然您g/ERROR将答案标记为答案,我想我会指出一种快速而肮脏的方法g!/ERROR/d。然后,您可以使用轻松撤消它u。同样,仅供参考,您可以:set hlsearch突出显示与:g命令匹配的模式。


1
感谢您对“:g!/ ERROR / d”的提示,优于接受的答案。
VinGarcia '17

您可以使用与模式匹配的线条来执行此操作吗?
Jacktose


26

最好的方法是->

:vimgrep /something/g % | copen

这将打开您的关键字的匹配列表,并且还将在quickfix窗口中仅显示匹配的行。

如果不考虑当前文件,则将%替换为文件路径。


1
如果不考虑当前文件,请用文件路径替换%。
Shivendra 2015年

您可以使用与模式匹配的线条来执行此操作吗?
Jacktose

1

:vimgrep /something/g % | copen很棒。也:g/<pattern>/d可用于删除带有图案的行


这恰恰是这个问题的另一个答案。
Shivendra

1

如果您碰巧使用fzf,可以使用:

  • :Lines 在所有打开的文件中
  • :BLines 仅在开放缓冲区中
  • :Rg [pattern] 使用 ripgrep


0

您可能在较少的vi vim&/ pattern /中表示命令,该命令显示包含/ pattern /的行(如grep)。

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.