二重引用符""
から一''
重引用符へ、一重引用符から二重引用符へなど
、''
""
引用符を逆にすることがよくあります。
一重引用符を二重引用符に切り替える方法があることは知っています。
:%s/'\(\([^']*\)\)'/"\1"/g
そして、二重引用符を一重引用符に切り替える方法:
:%s/"\(\([^"]*\)\)"/'\1'/g
しかし、最初にスワップされたクオートを 2 回目のスワッピングに含めずに、両方の操作を一緒に行うにはどうすればよいでしょうか?
通常、このように交換したい場合は、通常とはA
異なるキャラクターや、より長くてクレイジーなものなど、ドキュメント内で一意である可能性が非常に高い、まったく異なるものにB
置き換える中間ステップが必要です。A
|x-monkeyz-x|
次に、すべてのBをAsに変換し、最後にすべてをBに変換できます|x-monkeyz-x|
。
例えば、
'
すべてをに置き換えます!X!
"
すべてをに置き換えます'
!X!
すべてをに置き換えます"
これはより良いです:Vimで2つの文字列の出現を交換する最も簡単な方法は?
私は通常、テキストに表示される可能性が低い私の名前のような中間文字列を使用します。
使用\=
:
:%s/'\([^']*\)'/\='"'.tr(submatch(1), '"', "'").'"'/g
. これは、両方の文字が引用符としてのみ機能することを前提としていますが、最初のコードも同じことを行いますが、 my はそれらがペアになっているかどうかをチェックしません。