Vim – 全体のずれたインデントを自動で揃える(一括整形)方法

midSun31midSun31
IT・デジタル

プログラムを書いていると、インデントがいつの間にかずれていることはないでしょうか。可読性が悪いですが修正も結構大変そうな時、Vimが便利です。

Vimには全体のずれたインデントを自動で揃える方法があります。今回は、Vimでソース全体のずれたインデントを一括で自動整形する方法ついてご紹介します。

解説で使用しているVimのバージョンは8.1、OSはWindows10を使用しています。Mac、Linuxでも手順は共通です。

インデントを自動で一括で整形する方法

Vimを利用して、以下のソースコード(pythonファイル)のずれたインデントを揃えます。1行目の先頭や関数の先頭にスペース文字があったり、戻り値がずれている状態です。

全体のずれたインデントを自動で揃えるには、以下の順でコマンドを入力します。

  1. ノーマルモードの状態で、「gg」を入力して開始行にカーソルを合わせます。
    • インデントを修正する開始行を指定します。

  2. インデントを修正するコマンド「=」を入力します。
    • 1箇所だけ修正したい場合はカーソルを該当行に合わせ「=」を2回入力します。
  3. カーソルを終了行に合わせる「G」を入力します。
    • インデントを修正する終了行を指定します。
    • 一部だけの修正は「5G」など行数を指定すれば、範囲を限定して一括整形できます。

以上の手順でインデントを自動で整形することができます。1行目の先頭や関数の先頭にスペース文字が揃ったのがわかります。

インデントを自動で整形できない場合

インデントの自動整形は、Vimに設定されている言語ごとのインデントのルールに従います。

Pythonのようなインデントが言語規約の一部である言語の場合は、文法まで考慮してインデントを整形できます。

しかし、他の種類の拡張子の場合、タブを除くだけというパターンも多いです。例えばSQLのインデントを整形すると次のように綺麗にインデントができません。

  • 整形前
  • 整形後

サポートされていない言語は、基本的に文法を考慮したインデントの整形ができないため、自分でインデントのルールを作成する必要があります。

現在のVimがサポートしているインデントについては、次の公式ページから確認できます。

以上、Vimエディタで全体のずれたインデントを自動で揃える一括整形の方法でした。

IT・デジタル
Howpon[ハウポン]

コメント