Vimのアンドゥ、リドゥ、リピート — u, Ctrl+r, .

Vimのアンドゥツリー、リドゥ、変更を繰り返す強力なドットコマンドを学ぶ。u、Ctrl+r、そして経験豊富なVimユーザーが常に頼りにする . コマンドを理解。

Editing

詳細な説明

アンドゥとリドゥ

コマンド アクション
u 最後の変更を取り消す
Ctrl+r リドゥ(アンドゥの取り消し)
U 現在の行のすべての変更を取り消す
{n}u 最後のn回の変更を取り消す

Vimのアンドゥツリー

線形のアンドゥ履歴を持つほとんどのエディタとは異なり、Vimはアンドゥツリーを保持します。複数の変更を取り消して新しい編集を行っても、以前のリドゥ履歴は失われません — アンドゥツリーの分岐になります。このツリーを以下でナビゲートできます:

  • g- — より古いテキスト状態に移動
  • g+ — より新しいテキスト状態に移動
  • :earlier 5m — 5分前のテキスト状態に移動
  • :later 10s — 10秒先のテキスト状態に移動

ドットコマンド(.)

. コマンドは最後の変更を繰り返します。これはおそらくVimの最も強力な機能です:

ワークフロー例:

  1. ciwfoo — カーソル下の単語を "foo" に変更
  2. 別の単語に移動
  3. . — その単語も "foo" に変更

「変更」としてカウントされるもの:

  • Insertモードに入ってから出るまでのすべて
  • テキストを変更するNormalモードコマンド(xdd>> など)
  • 置換コマンド

ドットと検索の組み合わせ

キラーパターンは .n の組み合わせです:

  1. /oldWord — 単語を検索
  2. cwNewWord — それを変更
  3. n — 次のマッチにジャンプ
  4. . — 変更を繰り返す
  5. 必要に応じてステップ3-4を繰り返す

これにより各置換を手動で制御でき、:%s にはない柔軟性を提供します。

ユースケース

ミスを取り消したり、変更をリドゥしたり、Vimのドットリピートコマンドを使ってファイル内の複数箇所に同じ編集を効率的に適用する必要がある場合。

試してみる — Vim Cheat Sheet

フルツールを開く