← Vim道場

散らかったコードを片づける

ここからは使うキーを絞りません。できあがりの形だけを示すので、どのキーをどう組み合わせるかは自分で決めてください。クリアすると打鍵数が出るので、最短手数を狙って解き直すこともできます。

第7章 腕試しレッスン 31 / 36

最短手数は目的ではない

打鍵数を出しているのは、遠回りに気づくためです。l を10回押して辿り着いたときと f で1回で飛んだときの差が数字で出れば、次に同じ場面が来たときに手が変わります。実際の編集では、思いついた手で正しく直せることのほうが大事です。

繰り返しの選び方

同じ直しが何度も続くときの道具は3つあります。少ない回数なら .、条件で選べるなら :g:%s、複雑な手順ならマクロ(qaq@a)です。3行なら .、300行なら :g と考えると迷いません。

片づけの順番

散らかったコードを直すときは、消す・揃える・足す の順で進めると手数が減ります。先に不要な行を消しておけば、そのあとの整形や追記の対象が減るためです。逆に、整形してから消すと整形した手間がそのまま無駄になります。

この順番はマクロや :g を使うときにも効きます。対象が少ないほど、失敗したときに戻す範囲も小さくなります。

形を揃えてから繰り返す

繰り返しの道具はどれも「同じ操作で済むこと」を前提にしています。行ごとに直し方が違う状態のまま . やマクロを使おうとすると、途中で結果が食い違って直しに戻ることになります。

そこで、まず例外的な行だけを手で直して残りを同じ形に揃え、そのうえで繰り返す、という進め方をします。手で直す1行を惜しまないほうが、結果的に早く終わることが多くあります。

失敗しても戻せる前提で進める

範囲の広い操作は、実行する前に結果を完全に読み切れないことがあります。u で戻せるので、迷ったら試して、違ったら戻す、という進め方で構いません。

ただし :g やマクロを何回も重ねたあとでは、どこまで戻せばよいか分からなくなります。大きな操作の前に一度保存しておくか、区切りのよいところで :earlier 1f(前回保存した状態まで戻る)を使えるようにしておくと安心です。

打鍵数は次に活かすための数字

クリアしたときに出る打鍵数は、順位を競うためのものではありません。同じ課題を l の連打で解いたときと f で飛んで解いたときの差が数字で見えると、次に同じ場面が来たときに手が変わります。

最短手数に届かなくても、直せていれば十分です。実際の編集で価値があるのは、短く打つことではなく、意図したとおりに直せることのほうです。

このレッスンで扱うキー

キー動き
dd1行削除
.直前の変更を繰り返す
A行末から入力
Ctrl-v矩形選択を始める
I選んだ左端に一括で入力

関連記事

レッスン一覧へ戻るキーの逆引き一覧検定を受ける