在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)的行。