Virtual-Replace

  • 8
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

本記事は Vim Advent Calendar 2013 の 47 日目の記事です。
46 日目は @zoncoen さんによる、Unite-autojumpをつくった でした。

今回は地味に便利なあの機能です。

まとめ

:help gR
:help Virtual-Replace-mode

よくある話

あなたが不幸にも以下のようなコメントに出会ってしまったとします。

/********************************************/
/*                                          */
/*  関数の処理:                             */
/*              2014年1月16日 氏名          */
/*                                          */
/********************************************/

もちろん空白部分は全てハードタブです。
または、以下のようにスペースで整形された表組みを編集するような場合もあるかもしれません。

|         |         |         |
|---------|---------|---------|
|         |こ↑こ↓   |         |
|---------|---------|---------|
|         |         |         |

これを置換 R で書き換えようとすると文字幅の差によって、悲しみがあります。

/********************************************/
/*                                          */
/*  関数の処理:    process*/
/*              2014年1月16日 氏名         */
/*                                          */
/********************************************/
|         |         |         |
|---------|---------|---------|
|         |here |         |
|---------|---------|---------|
|         |         |         |

悲しみです。

Virtual-Replace

Vim には Virtual-Replace-Mode というものがあり、gR で開始します。
これは文字幅・タブ幅を維持したまま置換を行ってくれます。

※イメージ図
/********************************************/
/*                                          */
/*  関数の処理: function process            */
/*              2014年1月16日 氏名          */
/*                                          */
/********************************************/
※イメージ図
|         |         |         |
|---------|---------|---------|
|         |here!    |         |
|---------|---------|---------|
|         |         |         |

余談

g プレフィックスのキーバインドには色々と便利な機能があります。
gj gk に始まり、ga gd gf などです。個人的なお気に入りは
g<C-]> です。ぜひ試して使いこなしてみてください。

余談 2

Virtual-Replace、かっこいいですよね。響きが。私だけかもしれません。

以上 Vim Advent Calendar 2013 47 日目の記事でした、次回 48 日目は未定です。
Vim Advent Calendar 2013 では執筆者を募集しています。あと 318 人書けますので、どんどんやっていきましょう。以上です。