行をつなぐ・字下げを変える
改行やインデントは、消したり足したりを手で調整すると手数がかさむところです。Vimには行をつなぐキーと字下げを1段ずつ動かすキーがあり、どちらも回数を付けてまとめて処理できます。
字下げの幅は設定で決まる
>> が何文字ぶん動かすかは shiftwidth という設定で決まります。何も設定していないVimの既定値は8文字ですが、実際にはファイルの種類に合わせて2や4にしている人がほとんどです。この練習ページでは扱うコードに合わせて2文字にしてあります。
タブ文字を使うかスペースを使うかは expandtab で切り替えます。既存のファイルに合わせたいときは、この2つと tabstop をまとめて設定しておくと崩れません。
J は空白の入れ方に気を配る
J は単に改行を消すのではなく、次の行の先頭の空白を落としたうえで空白1つを入れてつなぎます。インデントされた行をつないでも、途中に余計な空白が残りません。
空白を入れずにそのままつなぎたいときは gJ を使います。また、回数を付けた 3J は3行を1行にまとめます。
ビジュアルモードの > は1回で抜ける
複数行を選んで > を押すと、1段ぶん字下げして選択が解除されます。もう1段深くしたいときは gv で選び直すか、. を押します。あらかじめ 3> と打てば3段ぶん一度に動かせます。
何度も押し直すのが煩わしいなら、vnoremap > >gv という割り当てを入れておくと、字下げしたあとも選択が残るようになります。よく使われる設定の1つです。
= で自動的に整える
字下げを自分で決めずにファイルの種類の規則に任せたいときは = を使います。== で1行、=G でカーソル行からファイル末尾まで、=ap で段落を整形します。
結果はファイルタイプごとの整形ルールに従うので、貼り付けた直後の崩れたコードを直すのに向いています。整形結果が気に入らない場合は indentexpr の設定を見ることになりますが、まずは == を試してみるのが早道です。
コメント行をつないだとき
コメント行が2行続いている状態で J を押すと、そのままでは2行目の // や # が文中に残ります。formatoptions に j というフラグを足しておくと、つなぐときに余分なコメント記号を落としてくれます。
set formatoptions+=j の1行で済むので、コメントを書く機会が多いなら入れておくと手直しが減ります。
このレッスンで扱うキー
| キー | 動き |
|---|---|
| J | 次の行とつなぐ |
| >> | 1段下げる |
| << | 1段戻す |
| 3>> | 3行まとめて下げる |
| gJ | 空白を入れずにつなぐ |