使用vim/gvim时,利用正则表达式可以很方便的替换文本。
但s//
命令使用正则表达式时需要额外的转义符号\
比如对于从例化模块copy过来的若干个接口信号
wb_datain,
wb_addr,
wb_dataout,
wb_enable,
如何快速变成下面这种形式
.wb_datain(wb_datain),
.wb_addr(wb_addr),
.wb_dataout(wb_dataout),
.wb_enable(wb_enable),
替换命令有两种写法
第一种
:'<,'>s@^\(.*\),@.\1(\1),
第二种
:'<,'>s@\v^(.*),@.\1(\1),
对于第二种写法中的\v
,是一个特殊的模式修饰符,它代表“very magic”模式。在 Vim 的正则表达式中,有几种不同的模式修饰符,它们决定了正则表达式中哪些字符是特殊字符,哪些字符是普通字符。
在默认情况下,Vim 的正则表达式使用“magic”模式,其中一些字符(如 *
、+
、?
、{
、}
、(
、)
、|
、^
和 $
)具有特殊含义。在“very magic”模式下,几乎所有的非字母数字字符都被视为特殊字符,这使得正则表达式更加直观和易于编写。
当在 Vim 的替换命令中使用 \v
时,相当于告诉 Vim 使用“very magic”模式来解析正则表达式。这样,就不需要对正则表达式中的特殊字符进行转义,从而简化了正则表达式的编写。