質問: コーディング中にいつも迷う操作なのですが、 ある複数の行を別の場所に移動した後にインデントを修正したい場合に、 効率のよい方法はありますでしょうか。 **Before** ``` aaaaaaaaaaaaaa aaaaaaaaaaaaaa aaaaaaaaaaaaaa { bbbbbbbbbbbbbb bbbbbbbbbbbbbb cccccccccccccc cccccccccccccc cccccccccccccc bbbbbbbbbbbbbb } ``` **After** ``` aaaaaaaaaaaaaa aaaaaaaaaaaaaa aaaaaaaaaaaaaa cccccccccccccc cccccccccccccc cccccccccccccc { bbbbbbbbbbbbbb bbbbbbbbbbbbbb bbbbbbbbbbbbbb } ``` **工夫なしの手順** 移動元のcccの3行をビジュアル行モードで選択してカットし、 移動先にプットして、 プットした3行を再び選択し直してインデントを修正する。 --- 思いついたのは、最初にビジュアル行モードで選択する操作をマクロに記録し、 プット後に選択する操作をマクロでやらせる、 という方法です。 ただ、インデントを修正しないといけないと気付くのは大抵はプット後なので、 事前にマクロに記録するというのは無理があるかなと思います。 よい方法があればお教えください。
回答: 泥臭い方法ですが、 * シフトする先頭行まで移動して、`行数<<`でシフトする。 * シフトする先頭行まで移動して、`<<`でシフトする。あとは`j.`でシフトを繰り返す。 * `:`でexになって、`開始行,終了行<`でシフトする。 ソースコードの場合は、整形ツールをかけて`:e!`で読み直します。