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

是否可以在vi或Vim中显示/隐藏所有匹配的行? 不突出显示,但只显示这些行。

例如,我有一个单词ERROR的文本。 如何让它只显示包含ERROR行以及如何仅显示没有ERROR行?

有没有一个解决scheme, 而不删除所有匹配的行,然后只是撤消它?

你知道:global命令吗? 这是做你想要的吗?

 :g/ERROR 

而对于:

 :g!/Error 

或等同地:

 :v/Error 

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

:vimgrep pattern %将search当前文件并将您带到第一个search结果。 更重要的是,它也把结果放在“quickfix list”中。

:copen将在一个单独的quickfix窗口中打开quickfix列表。 所以你将有一个单独的窗口,包含你最后一个vimgrep的所有行。 在quickfix-window里面,你可以点击Enter或者双击一行来跳到原始文件中相应的行。

:colder可以让你回到较旧的quickfix列表(较旧的vimgrep结果)。 而且:cnewer新的search结果。

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

当然,还有更多的事情可以做。 请参阅:help quickfix获取更多信息。

PS,你说你不想要一个删除行然后撤消的方法。 但是既然你把g/ERROR标记为答案,我想我会指出一个快速而肮脏的方法就是做g!/ERROR/d 。 你可以很容易地使用u撤消它。 也可以使用FYI, :set hlsearch以突出与:g命令匹配的模式。

您可以使用

 :g/ERROR/ 

用ERROR打印所有的行

还有一个Vim插件,我看了很多次,但没有使用: foldsearch:折叠不符合给定模式的行

最好的办法是 – >

 :vimgrep /something/g % | copen 

这将打开您的关键字匹配的列表,也将只显示quickfix窗口中匹配的行。

你可能意味着命令less了vi vim&/ pattern /显示包含/ pattern /(如grep)的行。