11


二重引用符""から一''重引用符へ、一重引用符から二重引用符へなど
''""引用符を逆にすることがよくあります

一重引用符を二重引用符に切り替える方法があることは知っています。
:%s/'\(\([^']*\)\)'/"\1"/g

そして、二重引用符を一重引用符に切り替える方法:
:%s/"\(\([^"]*\)\)"/'\1'/g

しかし、最初にスワップされたクオートを 2 回目のスワッピングに含めずに、両方の操作を一緒に行うにはどうすればよいでしょうか?

4

4 に答える 4

6

通常、このように交換したい場合は、通常とはA異なるキャラクターや、より長くてクレイジーなものなど、ドキュメント内で一意である可能性が非常に高い、まったく異なるものにB置き換える中間ステップが必要です。A|x-monkeyz-x|

次に、すべてのBをAsに変換し、最後にすべてをBに変換できます|x-monkeyz-x|

例えば、

  1. 'すべてをに置き換えます!X!
  2. "すべてをに置き換えます'
  3. !X!すべてをに置き換えます"

編集

これはより良いです:Vimで2つの文字列の出現を交換する最も簡単な方法は?

于 2012-04-12T18:58:52.913 に答える
3

私は通常、テキストに表示される可能性が低い私の名前のような中間文字列を使用します。

  • 一重引用符をUNLIKELY_STRINGに変更します
  • 二重引用符を一重引用符に変更します
  • UNLIKELY_STRINGを二重引用符に変更します
于 2012-04-12T18:59:22.823 に答える
2

使用\=:

:%s/'\([^']*\)'/\='"'.tr(submatch(1), '"', "'").'"'/g

. これは、両方の文字が引用符としてのみ機能することを前提としていますが、最初のコードも同じことを行いますが、 my はそれらがペアになっているかどうかをチェックしません。

于 2012-04-12T18:56:07.330 に答える