← Vim道場

直前の変更を繰り返す

同じ直しを何箇所かに入れる場面は毎日あります。. は直前にやった変更をそのままもう一度実行するキーで、入力した文字まで含めて繰り返してくれます。移動して . 、移動して . のリズムが身につくと、置換を書くまでもない修正が一気に速くなります。

レッスン 11 / 17

何が繰り返されるのか

. が繰り返すのは変更であって、移動は含まれません。ciwnew と入力して Esc を押した一連が1つの変更として記録され、. はそれをカーソル位置で実行します。

移動が含まれないおかげで「移動 → . → 移動 → .」という使い方ができます。逆に言うと、繰り返したい変更のあとに別の変更をしてしまうと記録が上書きされるので、繰り返しは先に済ませたほうが確実です。

. が効きやすい書き方

同じ結果になる操作でも、. の効き方には差が出ます。単語を書き換えるとき cw はカーソル位置に結果が左右されますが、ciw は単語のどこにいても同じ結果になるので、繰り返しても壊れません。

この「どこにいても同じ結果になる操作を選ぶ」という考え方は、次の検索と組み合わせるとさらに効きます。n で次の該当箇所へ飛んで .、というリズムは覚えておく価値があります。

置換との使い分け

すべてを機械的に置き換えてよいなら :%s のほうが確実です。. が向くのは「置き換えたい箇所と、そのままにしたい箇所が混ざっている」ときで、1つずつ目で見て判断しながら進められます。

間違えて . を押してしまっても u で戻せます。迷ったら試して、違ったら戻す、で構いません。

このレッスンで扱うキー

キー動き
.直前の変更を繰り返す
ciw単語を書き換え
dd1行削除
A行末から入力

関連記事

レッスン一覧へ戻る