regex - Vim 替换 : Delete All between specified words

标签 regex vim vi

我要剪切的文件的一部分

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

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

最佳答案

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

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

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

:d表示删除行。

在帮助中查看更多内容:

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

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

关于regex - Vim 替换 : Delete All between specified words,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40925298/

相关文章:

regex - 在 Hive 中使用 regexp_extract

vim - 在 vim 的选项卡中以只读模式打开文件

vim - 如何使用 .vimrc 在模式之间切换?

docker - 在 docker 容器的文本编辑器中无法正确显示特殊字符

javascript - 以下格式的日期正则表达式验证器 "MMM d, y HH:mm"

r - 我想在 R 中编写一个正则表达式来删除包含数字的字符串中的所有单词

javascript - 从 Webpack 的 require.context 中排除文件

ruby - rubocop "undefined method"代表一切

ruby-on-rails - vim 和 Ruby on Rails

vim - 在 Vim 中如何将光标移动到字符串的末尾?