我想在下面用“Exp […]”替换所有出现的“exp(…)”(实质上从Matlab改为Mathematica语法):
exp(-(pi*k2*2i)/3)*(v9/4 + (3^(1/2)*(v8/2 + (3^(1/2)*v9)/2))/2 + (3^(1/2)*v8)/12) + exp((pi*k2*2i)/3)*(v9/4 + (3^(1/2)*(v8/2 + (3^(1/2)*v9)/2))/2 + (3^(1/2)*v8)/12) ...
是否可以使用vim,sed或awk自动执行此操作?诀窍不是将所有“(”替换为“[”,只替换在exp之后立即出现的那些和相应的对.
解决方法
你可以用vim宏做到这一点.
让我们按qaq清除寄存器. (如果记录了以前的任何操作,我们可以清除它们)
按qa开始宏录制.
搜索exp(通过输入/ exp(/ e.这会将光标放在(.
按%移动到其右括号.按r]将其替换为].
现在,按N移动到exp(.按r [将其替换为[.按@a递归替换所有此类实例.按q停止录制.
现在,你可以按@a来播放宏,它将取代所有地方.