逗号后添加缺少的空格

时间:2015-10-28 14:28:19

标签: regex vim vi

我尝试改变

rest.get = function(url,onsuccess,onerror) {
      rest.askServer("GET", url, null,200,onsuccess,onerror);
};

rest.get = function(url, onsuccess, onerror) {
      rest.askServer("GET", url, null, 200, onsuccess, onerror);
};

我认为这个命令可行:

:%s/,(\S)/, \1/g

但事实并非如此。

为什么?我应该使用什么命令?

4 个答案:

答案 0 :(得分:6)

您可以使用捕获组:

%s/,\(\S\)/, \1/g

\(\S\)用于捕获逗号后的下一个非空格字符。

或者您可以使用正向前瞻来避免捕获:

:%s/,\(\S\)\@=/, /g

或者使用非常神奇来避免逃跑:

:%s/\v,(\S)\@=/, /g

答案 1 :(得分:4)

使用:%s/,\(\S\)/, \1/g

如vim文档中所述,您应该转义括号。考虑一下这个wiki条目:Search and replace in vim

答案 2 :(得分:1)

替代解决方案:

:%s/,\zs\ze\S/ /g

答案 3 :(得分:0)

我遇到了同样的问题,:%s/,(\S)/, \1/g解决方案对我不起作用(我在vis键映射中使用vscode)。我使用了正向超前来隔离,来代替,<space>,使用

:%s/,(?=\S)/, /g

regexr.com为此非常有帮助