我正在尝试修剪XML标签中的空格,这是我拥有的示例:
<xmlT ag>
content between tag
</xmlTa g>
自:
<xmlTag>
content between tag
</xmlTag>
(这是记事本++这个问题的副本,但包括一个不明显的vim解决方案。
注意:该解决方案还应处理多个空格,例如:
<messed up t ag>
这将成为
<messseduptag>
为Notepad++提供的答案包括使用vim不支持的符号[sw]
。
结合这两个答案,再加上了解如何在 vim 中执行积极的前瞻,您可以在 vim 中使用此表达式去除 xml 标记中任意数量的空格:
:%s/s+([[:space:][:alnum:]_]*>)@=//gc
解释:
我们正在寻找空格(s
)一次或多次(+
),在它前面(@=
)还有一个空格或字母数字字符或下划线(([[:space:][:alnum:]_]*>)
)零次或多次(*
),后跟一个>
。我们将在整个文件(g
)中将一个或多个空格字符(即表达式开头的s+
)替换为无任何东西(//
),并在替换任何内容之前要求确认(c
)。
以下简单的替换命令适用于第一个示例:
%s/(</*xmlw+)s+/1/g
更一般的替换将从任意 XML 标记中删除任意数量的空格
:%s/<zs.*ze>/=substitute(submatch(0),' ','','g')