← Vim道場

行をつなぐ・字下げを変える

改行やインデントは、消したり足したりを手で調整すると手数がかさむところです。Vimには行をつなぐキーと字下げを1段ずつ動かすキーがあり、どちらも回数を付けてまとめて処理できます。

第5章 整えて探すレッスン 22 / 36

字下げの幅は設定で決まる

>> が何文字ぶん動かすかは 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行目の //# が文中に残ります。formatoptionsj というフラグを足しておくと、つなぐときに余分なコメント記号を落としてくれます。

set formatoptions+=j の1行で済むので、コメントを書く機会が多いなら入れておくと手直しが減ります。

このレッスンで扱うキー

キー動き
J次の行とつなぐ
>>1段下げる
<<1段戻す
3>>3行まとめて下げる
gJ空白を入れずにつなぐ

関連記事

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