我想在下面用"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) ...
Run Code Online (Sandbox Code Playgroud)
是否可以使用vim,sed或awk自动执行此操作?诀窍不是将所有"("替换为"[",只替换在exp之后立即出现的那些和相应的对.
你可以用vim宏来做到这一点.
让我们a按下清除寄存器qaq.(如果记录了以前的任何操作,我们可以清除它们)
按下开始宏录制qa.exp(通过输入搜索/exp(/e.这会把光标放在(.按下%移动到其右括号.按下r]以替换它].现在,按N移动到exp(.按下r[以替换它[.按@a以递归替换所有此类实例.按q停止录制.
现在,你可以按下@a播放宏,它将取代所有地方.