是否可以使用任何命令转换此
flux(1,i)
flux(2,i)
flux(3,i)
flux(4,i)
flux(5,i)
到VI?
flux(i,1)
flux(i,2)
flux(i,3)
flux(i,4)
flux(i,5)
一般情况下,我想将flux(a,b)
转换为flux(b,a)
答案 0 :(得分:2)
替换正则表达式,在逗号周围交换两组:
:%s/flux(\([^,]*\),\([^)]*\))/flux(\2,\1)/
细分:
:%s/ #global replace
flux( #find 'flux('
\([^,]*\), #match everything until a comma into group 1
\([^)]*\)) #match everything until a ')' into group 2
/ #replace with:
flux( #text 'flux('
\2,\1 #group 2, followed by group 1
)/ #close parenthesis and end match
如果一条线路上有多个磁通线呼叫,则在末尾添加g
。
答案 1 :(得分:1)
您可以使用替换:
:%s/\([0-9]\),i/i,\1/g
这会将< digit>,i的每个外观转换为i,< digit>。
答案 2 :(得分:1)
是的,这是可能的。这是给定输入的一种方式,从第一个f:
上的光标开始 f1<c-q>4jxlphh<c-q>4jxp
答案 3 :(得分:1)
从命令模式:
:%! m4 -Dflux='`flux($2,$1)'"'"
这将通过m4
运行当前缓冲区来进行替换。注意
这将正确替换跨越换行符或包含嵌套括号或递归的输入。例如,
flux(text that contains parens
and (spans) a newline,flux( q, r ) )
将替换为
flux(flux(r ,q) ,text that contains parens
and (spans) a newline)
如果嵌套的parens不匹配,则会出错。此外,对于flux的任何参数的前导空格都将被丢弃,但这是一个更强大的解决方案,您可以尝试使用正则表达式匹配。