vim - How do I merge these two regexs into a single one? -
i'm using 1 remove whitespace:
%s/\s\+//g
and 1 wrap comma-separated words between double quotes (and leave 1 space after comma):
%s/\s*\([^,]\+\)/ "\1"/g
i tried merging them this:
%s/\s\+//\|/\s*\([^,]\+\)/ "\1"/g
but trailing characters
error.
how correctly merge 2 regexs?
because replacement part different, you'd have use :help sub-replace-expression
differentiate between 2 regexp parts , either remove or double-quote, this:
:%s/\s\+\|\s*\([^,]\+\)/\=empty(submatch(1)) ? '' : ' "'.submatch(1).'"'/g
but still doesn't make sense, because deletion of trailing whitespace come after it's been double-quoted. these 2 substitutions aren't related, should concatenate 2 commands |
command separator (in mapping, you'd use <bar>
instead):
:%s/\s\+//g|%s/\s*\([^,]\+\)/ "\1"/g
Comments
Post a Comment