是否有可能與任何命令該轉換VAR(A,B)爲VAR(B,A)的VI
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)
是否有可能與任何命令該轉換VAR(A,B)爲VAR(B,A)的VI
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)
做一次更換正則表達式,交換周圍的逗號兩組:
:%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
。
你可以使用一個替代:
:%s/\([0-9]\),i/i,\1/g
這將打開<數字的每一次亮相>,我到我,<位數> 。
這幾乎奏效。但我也有這種情況: '通量(m,i + 1)'到'通量(i + 1,m)' – arunmoezhi
蒂姆的答案基於同樣的想法,具有更強大的替代。 – Joni
是的,這是可能的。這裏有一種方法爲您給定的輸入,首先將光標定位到第一架F:
f1<c-q>4jxlphh<c-q>4jxp
從命令模式:
:%! 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)
被替換如果嵌套的括號不匹配,你會得到一個錯誤。此外,任何變量參數的前導空格都將被丟棄,但這是一個更強大的解決方案,您可以嘗試使用正則表達式匹配。
哇!它像寶石一樣工作。我從來不知道VI是如此強大的 – arunmoezhi
如果我有一個4D數組並想切換第一個和最後一個維度,那麼我應該將它們分成4組,然後將它們排序爲'\ 4,\ 2,\ 3,\ 1' ? – arunmoezhi
@arunmoezhi - 應該工作。您也可以將2和3放入一個組中,因爲您沒有將它們分開。然後你只有3個組,你只需交換1和3. – Tim