用于替换引号内空格的vim正则表达式

前端之家收集整理的这篇文章主要介绍了用于替换引号内空格的vim正则表达式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下格式的文字
ERR_OUT_OF_MEM,"ERR OUT OF MEM"
ERR_SOMETHING_BAD,"ERR SOMETHING BAD"

我想用下划线替换文本中带引号的所有空格:

ERR_OUT_OF_MEM,"ERR_OUT_OF_MEM"
 ERR_SOMETHING_BAD,"ERR_SOMETHING_BAD"

我能想出的最好的正则表达式是:

\("\w\+\)\@<=

(那里有一个空间)

但这只能找到每个引用字符串中的第一个空格,我需要多次重复这个空格才能获得所需的效果.

有什么方法可以一次性完成吗?

谢谢!

肯定有一个0长度模式可以一次通过,但由于我从未使用它们取得太大成功,我更喜欢这种方法
:%s/\%("[^"]*"\)*\("[^"]*"\)/\=substitute(submatch(1),' ','_','g')/g

注意:双引号保持2对2分组,以便不进行转换

foo bar "foo bar" "foo barr"

foo bar "foo_bar"_"foo_barr"

编辑:正如猖獗指出的那样,以下绰绰有余:

%s/"[^"]*"/\=substitute(submatch(0),'g')/g
原文链接:/bash/384436.html

猜你在找的Bash相关文章