2 つの単語を交換できる正規表現を探しています。(他の vim ショートカットも使用できます)
私は長いリストを持っています:
a.transmit
b.receive
c.receive
d.transmit
送信のすべてのインスタンスを受信に変更し、すべての受信を送信に変更する必要があるため、次のように読む必要があります。
a.receive
b.transmit
c.transmit
d.receive
ありがとう、
これは、Tim Pope のAbolishプラグインを使用して簡単に行うことができます。
:%S/{transmit,receive}/{receive,transmit}
次のようなことができます。
:%s/\v(transmit|receive)/\={'transmit':'receive','receive':'transmit'}[submatch(0)]/g
はい、次の式を使用できます。
:%s/\(receive\|transmit\)/\=submatch(1) == 'receive' ? 'transmit' : 'receive'
それはかなり自明です-一致したグループがreceive
式である場合は に評価されtransmit
、そうでない場合は に評価されreceive
ます。
単一のコマンドではありませんが、sed を 3 回使用する意思がある場合は、次の行に沿って何かを実行できます。
:%s/transmit/temporaryholdervalue/g
:%s/receive/transmit/g
:%s/temporaryholdervalue/transmit/g
すべての値を切り替える必要があります。