是否可以在vi或Vim中显示/隐藏所有匹配的行?不突出显示,只显示那些线条.
例如,我有一个单词的文字ERROR
.如何让它只显示包含的行ERROR
以及如何仅显示没有的行ERROR
?
是否有解决方案没有删除所有匹配的行,然后只是撤消它?
你知道这个:global
命令吗?这样做你想要的吗?
:g/ERROR
并为相反的:
:g!/Error
或等效地:
:v/Error
根据您的用例,另一种方法是使用vimgrep及其结果在quickfix中.您可以执行以下操作:
:vimgrep pattern %
将搜索当前文件并转到第一个搜索结果.更重要的是,它还将结果放在"quickfix list"中.
:copen
然后将在单独的quickfix窗口中打开quickfix列表.因此,您将拥有一个单独的窗口,其中包含您上一个vimgrep中的所有行.在quickfix窗口中,您可以按Enter键或双击一行以跳转到原始文件中的相应行.
:colder
将让你回到旧的quickfix列表(较旧的vimgrep结果).并:cnewer
转向更新的搜索结果.
请注意,quickfix列表在运行时也会更新:make
(这就是为什么它被称为修复错误的quickfix).因此,还有一个名为"位置列表"的quickfix列表的替代品.要使用它,而不是你用:lvimgrep
,然后用1-前缀的命令,而不是C-前缀的命令- ,:lopen
,.:lolder
:lnewer
当然,你可以做更多的事情.有关详情:help quickfix
,请参阅.
PS,你说你不想要一种删除行然后撤消它们的方法.但是既然你标记g/ERROR
了答案,我想我会指出一种快速而肮脏的方法g!/ERROR/d
.然后,您可以使用它轻松撤消它u
.另外,仅供参考,您可以:set hlsearch
突出显示与:g
命令匹配的模式.
您可以使用
:g/ERROR/
用ERROR打印所有行
还有一个Vim插件,我看了很多次但没有使用: foldsearch:折叠与给定模式不匹配的行
最好的方法是 - >
:vimgrep /something/g % | copen
这将打开关键字的匹配列表,并且仅在quickfix窗口中显示匹配的行.