Linux

在 VIM 中交換單詞而不使用任何第三方外掛

  • October 29, 2018

假設我有一個只包含字元和數字的文件(沒有特殊字元或標點符號),我如何使用 VIM 交換兩個可能相鄰也可能不相鄰的單詞?

我嘗試了以下方法(將所有出現的“Tom”替換為“Jerry”),但由於明顯的原因它不起作用。

​:%s/Tom/Jerry/g​ :%s/Jerry/Tom/g

謝謝!

也許你可以使用這樣的中間變數

​:%s/Tom/XX9G235a65/g​ :%s/Jerry/Tom/g :%s/XX9G235a65/Jerry/g

下面是兩個分別使用:help sub-replace-expression條件運算符和字典查找的變體(都使用且同樣繁瑣):

:substitute/\<\(Tom\|Jerry\)\>/\=submatch(0) ==# 'Tom' ? 'Jerry' : 'Tom'/g
:substitute/\<\(Tom\|Jerry\)\>/\={'Tom':'Jerry', 'Jerry':'Tom'}[submatch(0)]/g

有了這個,你不需要像@MichaelDurrant’s answer中的中間人。

引用自:https://unix.stackexchange.com/questions/353212