VIM搜索/替换2个括号或列之间的空格

Gle*_*lar 4 regex vim replace

给出以下行:

[aaaa bbbb cccc dddd] [decimal](18, 0) NULL,
Run Code Online (Sandbox Code Playgroud)

如何在Vim的第一组括号之间替换空格?/ s命令会是什么样的?

更新:

这是预期的结果

    [aaaa_bbbb_cccc_dddd] [decimal](18, 0) NULL,
Run Code Online (Sandbox Code Playgroud)

jam*_*san 7

最简单的方法是直观地选择[]ed字符串的内容,并在该选择上执行替换:

vi]:s/\%V \%V/_/g
Run Code Online (Sandbox Code Playgroud)

但是,如果您尝试以编程方式执行操作,则无法正常工作.在这种情况下,您可以匹配整个[]ed字符串并使用替换表达式来构造结果.

:s/\[[^\]]*\]/\=substitute(submatch(0), ' ', '_', 'g')/g
Run Code Online (Sandbox Code Playgroud)