我在Windows 7上使用gVim 7.4.68。我有一个文本文件,其内容如下所示。以下给出的两个条目仅作为示例。该文本文件包含100个具有伪名称,Symmetrix ID,逻辑设备,状态/策略以及路径相关信息的字段。
Pseudo name=emcpowermg
Symmetrix ID=000123456781234
Logical device ID=01D3
state=alive; policy=SymmOpt; priority=0; queued-IOs=0
==============================================================================
---------------- Host --------------- - Stor - -- I/O Path - -- Stats ---
### HW Path I/O Paths Interf. Mode State Q-IOs Errors
==============================================================================
1 qla2xxx sdga FA 10bA active alive 0 1
0 qla2xxx sdgb FA 7bA active alive 0 0
Pseudo name=emcpowerdl
Symmetrix ID=000123456780000
Logical device ID=0427
state=alive; policy=SymmOpt; priority=0; queued-IOs=0
==============================================================================
---------------- Host --------------- - Stor - -- I/O Path - -- Stats ---
### HW Path I/O Paths Interf. Mode State Q-IOs Errors
==============================================================================
1 qla2xxx sdaca FA 9bA active alive 0 0
0 qla2xxx sdaci FA 8bA active alive 0 0
我只想过滤除Symmetrix ID和逻辑设备之外的所有其他内容,以便整个文件中填入以下条目:
Symmetrix ID=000123456781234
Logical device ID=01D3
Symmetrix ID=000123456780000
Logical device ID=042
尝试:
%v/^Symmetrix.*\nLogical/d
和
%v/^Symmetrix.*\rLogical/d
然后尝试复制粘贴东西,以便^ M正确显示:
%v/^Symmetrix.*^M^Logical/d
但这一切都无效。它没有过滤任何东西,我得到一个空白的屏幕。 请告诉我哪里出错了。
我最近开始使用gVim,但我仍然对它有所了解。
此致 PMU
答案 0 :(得分:4)
此命令适用于给定的示例:
:v/^\(Symmetrix\|Logical\)/d
我们会查找不以Symmetrix
或Logical
开头的行,我们会d
选择它们。
由于\v
erymagic导致反斜杠较少的相同命令:
:v/^\v(Symmetrix|Logical)/d
(编辑)
尝试失败的主要原因是您实际匹配Symmetrix
行而不是Logical
行,即使您在模式中引入\nLogical
:模式跨越多个如果是实际匹配的行是第一行,而不是您在模式中定位的两行。