Vim替换:删除指定单词之间的所有内容

Vim substitute: Delete All between specified words

我要剪切的文件的一部分

HTMName=[...] owns the means of production. Proletariat do not and sell their labor power.
HTMFile=x
ClickPlay=0
TestElement=0

Type=HTML
Cors=123
DisplayAt=215
Hyperlink=0
HTMName=Bourgeois
HTMFile=x
ClickPlay=0

最终结果

[...] owns the means of production. Proletariat do not and sell their labor power.
Bourgeois

我知道文件的顶部和底部会有剩余部分。 我尝试了以下

:s%/^\sHTMFile[\s\S]*\n\s*HTMName=$//g

还有许多其他变体,return 都没有找到模式。我对正则表达式的掌握很薄弱。

首先,我会删除所有不包含搜索模式的行(HTMName= 在行的开头),然后我会删除搜索模式

:v/^HTMName=/d
:%s///

:v 表示在 {pattern}(在本例中为行首的 "HTMName=")不匹配的行上执行命令(在本例中为“:d”)。

:d表示删除行。

在帮助中查看更多内容:

PS:如果你的模式不在一行,可以试试

:%s/^HTMName=\(\_.\{-}\)HTMFile=\|.*//