如何在vim中的字符串后删除一定数量的字符?

时间:2013-09-13 10:59:36

标签: vim

我有一个大文件,我需要在某个模式之后编辑一定数量的字符。这是我文件的一部分示例:

@IB4UYMV03HCKRV
100 100 100 100 100 100 100 100 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 39 39 39 40 40 40 40

@IB4UYMV03GZDSU
100 100 100 100 100 100 100 100 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 39 39 39 40 40 40 40 40 40 40 40 40 40 40 39 39 39 40 40 40 40 40 40 40 40 40 "

100 100 100 100 100 100 100 100之后我想删除下一个带有空格的36个字符40。我尝试使用查找和替换,但字符并不总是40,它们可以是任何两个数字。

有没有办法在模式后删除36个字符?

1 个答案:

答案 0 :(得分:3)

如果您将光标放在12 4字符串中的第一个40上,则可以在正常模式下执行36x,这将删除单个字符36次。

或者,如果您有常规模式,则可以使用以下替换:

:%s/^\v(100 ){8}\zs(\d\d ){12}/

细分:

Ex Command:
%              All lines
s              Substitute

Pattern:
^              Anchor to start of line
\v             Very magic mode, to avoid excessive slashes
(100 ){8}      8 instances of the string "100 "
\zs            Start selection
(\d\d ){12}    12 instances of the string "\d\d " (i.e., \d is any digit)

Replacement:
               Nothing (i.e., remove it)

“选择”是最终被替换的部分。请注意,没有匹配的\ze(结束选择),因为我们不关心模式是如何结束的。