vim自動交換

vim自動交換

次の行があります。

    '0,
    '1,
    '2,
    '3,

カンマの前に引用符を付ける方法は?

これまで私は次のことを試しました。

%s/[0-9],/&/g

だから&hereは一致するパターンを置き換えます...

答え1

次のようなものを使用できます。

%s/\('[0-9]\),/\1',/

選択グループを使用\(して作成し、代替の側面(最初のグループを意味)で参照します。\)\1

答え2

欲しいなら移動する数値の前の位置からカンマの前の位置までのクォータを指定してから、グループ化を使用できます。

%s/'\([0-9]\),/\1',/

または、カンマの前に別の引用符を追加するには、最初のグループに引用符を含めます。

%s/\('[0-9]\),/\1',/

答え3

通常、私はこの操作にマクロを使用します。

qqEi'<Esc>0jq3@q

作業は完了です(<Esc>5つの個々のキーではなくEscキーを押す部分があることに注意してください)。分析は次のとおりです。

  • qqマクロの記録を開始し、それをキーに割り当てますq
  • Ei'<Esc>単語の終わりに移動してを挿入します'
  • 0j次の行の先頭に移動します。
  • q録音を終了します。
  • 3@qマクロを3回再生し、他の3行にも同じ操作を適用します。

3持っている行数に変更してください。

答え4

おそらく、この機能が必要な一般的なフォームを定義するのを忘れたかもしれません。推測なしに要求を達成するために、サンプル入力に適した最も単純な(怠惰な!)ソリューションは次のとおりです。

%s/,/',/

より複雑なケースを処理するには、パターン置換が機能する最も複雑なケースと理想的には、ターゲット出力の例を含むより良い例を作成する必要があります。

関連情報