如何在gVim中保留所需的行

时间:2013-11-10 18:34:30

标签: vim

我在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

1 个答案:

答案 0 :(得分:4)

此命令适用于给定的示例:

:v/^\(Symmetrix\|Logical\)/d

我们会查找不以SymmetrixLogical开头的行,我们会d选择它们。

由于\v erymagic导致反斜杠较少的相同命令:

:v/^\v(Symmetrix|Logical)/d

(编辑) 尝试失败的主要原因是您实际匹配Symmetrix行而不是Logical行,即使您在模式中引入\nLogical:模式跨越多个如果是实际匹配的行是第一行,而不是您在模式中定位的两行。