仅使用substitute命令替换vim中的部分行

Pak*_*Pak 3 vim

我正在使用类似于以下内容的行编辑文件:

{"a_function", a_function},
{"a_second_function", a_second_function},
Run Code Online (Sandbox Code Playgroud)

我想将下划线转换为空格,但仅限于引号内.有没有办法通过使用:substitute命令来做到这一点?我知道我可以通过录制一个宏来做到这一点,并且可能有插件可以做到这一点,但为了聪明起见,我想用:substitute命令一次性完成这个.

rom*_*inl 6

这个命令应该做你想要的:

:%s/\v(".{-}")/\=substitute(submatch(1), "_", " ", "g")
Run Code Online (Sandbox Code Playgroud)

我捕获每行上的第一对引号然后我用它作为替换,删除了所有下划线.