我想用vim的搜索和替換替換所有的「with」,反之亦然。有沒有辦法一步到位呢?我在想這樣的事情:vim中的條件替換
:s/\("\|'\)/\1=="?':"/
其中當然\1=="?':"
-part是什麼,在vim工程提前
感謝
我想用vim的搜索和替換替換所有的「with」,反之亦然。有沒有辦法一步到位呢?我在想這樣的事情:vim中的條件替換
:s/\("\|'\)/\1=="?':"/
其中當然\1=="?':"
-part是什麼,在vim工程提前
感謝
這是一個案例:help sub-replace-special
:
:s/["']/\=submatch(0) == '"' ? "'" : '"'/g
這個匹配的兩個引號(以更簡單的方式與[...]
),然後使用三元運算符把每個引號走向反面。 (對於更復雜的情況,可以使用字典查找。)
另一種方法(更適合於腳本)是使用內置的tr()
函數。要應用它的緩衝區,getline()
/setline()
用於:
:call setline('.', tr(getline('.'), "'\"", "\"'"))
你可以這樣做很容易地通過使用abolish.vim插件。
Abolish.vim有一個:Subvert
命令,它爲您提供了一種在自己的小DSL中搜索和替換的不同方法。
:%S/{\",'}/{',\"}/g
什麼是'\「'的轉義;這非常不直觀?!(當我刪除它時,我得到一個'E64'。 –
功率的Unix工具;)
:%!tr "'\"" "\"'"
不錯的一個!非常感謝你! – Vince
在替換表達式中是否可以使用匹配的模式'\ 1','\ 2',...?我嘗試過,但反斜槓是從字面上插入的。 –
@EnricoMariaDeAngelis:是的,通過'submatch(1)'等;文字'1'在這裏不起作用。 –