我正在尝试在XML标签中修剪一个空格,这是我所拥有的一个示例:
<xmlT ag>
content between tag
</xmlTa g>
收件人:
<xmlTag>
content between tag
</xmlTag>
(这是Notepad ++的this question的副本,但其中包括一个不明显的vim解决方案。)
注意:该解决方案还应该处理多个空格,例如:
<messed up t ag>
将会变成
<messseduptag>
答案 0 :(得分:0)
为Notepad ++提供的answer包括使用[\s\w]
标记,该标记在vim中为not supported。
结合两个答案以及对如何执行positive lookahead in vim的理解,您可以在vim中使用此表达式在xml标记内剥离任意数量的空格:
:%s/\s\+\([[:space:][:alnum:]_]*>\)\@=//gc
说明:
我们正在寻找空白(\s
)一次或多次(+
),而前面还有一个空格(\@=
)或字母数字字符或下划线(\([[:space:][:alnum:]_]*>\)
)零次或多次(*
),后跟>
。我们将在整个文件(\s\+
)中将一个或多个空格字符(即,从表达式开头的//
替换为{g
),并要求确认(c
)替换之前。
答案 1 :(得分:0)
以下简单的替换命令适用于第一个示例:
%s/\(<\/*xml\w\+\)\s\+/\1/g
更一般的替换将从任意XML标记中删除任意数量的空格
:%s/<\zs.*\ze>/\=substitute(submatch(0),' ','','g')