我正在使用这个删除所有空格:
%s/\s\+//g
这个用双引号括起逗号分隔的单词(并在逗号后留一个空格):
%s/\s*\([^,]\+\)/ "\1"/g
我试着像这样合并它们:
%s/\s\+//\|/\s*\([^,]\+\)/ "\1"/g
但我收到Trailing Characters
错误。
如何正确合并这两个正则表达式?
答案 0 :(得分:3)
您无法将两个正则表达式合并为一个,因为替换部分不同。
您可以使用|
组合这两个命令。
尝试:
%s/\s\+//g|%s/\s*\([^,]\+\)/ "\1"/g
答案 1 :(得分:3)
由于替换部分不同,您必须使用:help sub-replace-expression
来区分两个正则表达式部分,并删除或双引号,如下所示:
:%s/\s\+\|\s*\([^,]\+\)/\=empty(submatch(1)) ? '' : ' "'.submatch(1).'"'/g
但这仍然没有意义,因为删除尾随空格只有在它已被双引号之后才会出现。由于这两个替换不相关,所以您应该只使用|
命令分隔符连接这两个命令(在映射中,您将使用<Bar>
代替):
:%s/\s\+//g|%s/\s*\([^,]\+\)/ "\1"/g
答案 2 :(得分:2)
你可以使用(|)或符号
试试这个正则表达式
%s/\s\+//g|%s/\s*\([^,]\+\)/ "\1"/g