给出以下一行:
[aaaa bbbb cccc dddd] [decimal](18, 0) NULL,
如何仅在Vim的第一组括号之间替换空格? / s命令会是什么样的?
更新
这是打算结果
[aaaa_bbbb_cccc_dddd] [decimal](18, 0) NULL,
答案 0 :(得分:7)
最简单的方法是直观地选择[]
ed字符串的内容,然后根据该选择执行替换:
vi]:s/\%V \%V/_/g
但是,如果您尝试以编程方式执行操作,则效果不佳。在这种情况下,您可以匹配整个[]
ed字符串,并使用replacement expression来构建结果。
:s/\[[^\]]*\]/\=substitute(submatch(0), ' ', '_', 'g')/g
答案 1 :(得分:1)
正常设置'魔术'你想做的事
:s/] \[/][/
或更加狂热
:s/]\zs\s\+\ze\[//
或使用正则表达式中明确设置的魔术等级
:s/\V]\zs\s\+\ze[//
\ zs和\ ze将替换限制为它们所包含的区域。
\ M完全关闭魔法,所以每个字符或字符组合都没有前缀\
。
'magic'(:help 'magic'
)是一个全局选项,用于确定如何解释正则表达式中特殊字符的潜在特征。
答案 2 :(得分:-1)
您可以随时进行交互式查找和替换,这可以使用标记c