EditorConfig ジェネレーター

.editorconfig
結果

リポジトリのルートに置いた .editorconfig は、このプロジェクトがファイルをどう整形するかを最新の IDE に伝え、タブかスペースかの議論をファイルごとに決着させます。Python は 4 スペース、JavaScript は 2 スペース、Makefile はタブ(必須)。このジェネレーターはあなたの書式設定(インデントのスタイルとサイズ、改行コード、文字コード、最大行長、末尾の改行、行末の空白の除去)から .editorconfig を組み立て、よく使う 2 つの上書きを常に含めます:[*.md] は Markdown の改行用に末尾の空白を残し、[Makefile] は make が必須とするタブを使います。

.editorconfig の作り方

  1. 1

    全体の既定値を設定する

    文字コード(既定は utf-8)、改行コード(lf か crlf)、インデントのスタイルとサイズ、最大行長、末尾への改行の挿入、行末の空白の除去。

  2. 2

    組み込みの上書きを確認する

    このジェネレーターは常に `[*.md]`(`trim_trailing_whitespace = false`、Markdown は末尾の空白で改行するため)と `[Makefile]`(`indent_style = tab`、make 自体が必須とする)を追加します。

  3. 3

    ファイルをコピーする

    コピーボタンで生成された `.editorconfig` を取得し、リポジトリのルートに置きます。

  4. 4

    あとで拡張する

    言語ごとのルールが必要ですか? 独自のセクションを追加してください。例:`[*.py]` に `indent_size = 4`。

.editorconfig の役割

プロジェクトのルート(または任意のディレクトリ)に置いた .editorconfig というファイルは、書式の規約を宣言します。EditorConfig に対応したエディタ(主要な IDE と最近のほとんどのテキストエディタ)は、ファイルを開いたときにそのルールを適用します。

出力例

既定の設定(スペース、サイズ 4、LF、utf-8)では、次のように生成されます:

root = true

[*]
indent_style = space
indent_size = 4
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
max_line_length = 120

[*.md]
trim_trailing_whitespace = false

[Makefile]
indent_style = tab

主なディレクティブ

ディレクティブ 指定できる値 補足
root true / false プロジェクトのルートで true にすると探索がそこで止まる
charset utf-8, utf-8-bom, latin1, utf-16-be, utf-16-le 既定は utf-8
end_of_line lf, crlf, cr クロスプラットフォームなら lf、Windows 専用リポジトリなら crlf
indent_style space, tab
indent_size 整数 スペースの数。tab のときは無視される
tab_width 整数 タブの表示幅(既定は indent_size と同じ)
insert_final_newline true / false POSIX 準拠のファイルにする
trim_trailing_whitespace true / false Markdown ではオフにする(行末の空白が改行を意味するため)

言語ごとの慣習の一覧

言語 / ファイル 慣習
JS, TS, JSON 2 スペース
HTML, CSS, YAML 2 スペース
Python 4 スペース(PEP 8)
PHP 4 スペース(PSR-12)
Ruby 2 スペース
Go タブ(gofmt が強制)
Rust 4 スペース(rustfmt が強制)
Java 4 スペース
Makefile タブ(make 自体が必須とする)
Markdown 行末の空白を残す(<br> に使う)
バッチ / CMD (.bat) 改行コードは crlf

落とし穴:Markdown の行末の空白

Markdown では行末に半角スペースを 2 つ置くと「ここに <br> を入れる」という意味になります。.editorconfig がすべてのファイルで行末の空白を除去すると、その改行が消えてしまいます。[*.md] に対して trim_trailing_whitespace = false で上書きしてください。

お使いの IDE は対応していますか?

ネイティブ対応:VS Code、JetBrains の IntelliJ 系、Sublime Text、Vim(プラグイン経由)、Emacs(プラグイン経由)、Atom、Notepad++、Xcode。標準で EditorConfig に対応していないエディタでも、たいていはプラグインがあります。このファイルは機械可読なので、リンターやフォーマッターからも参照できます。

よくある質問

プロジェクトのルートに root = true を付けて置きます。特定のパスを上書きするために、サブディレクトリへ追加の .editorconfig を置くこともできます。探索はツリーを上へたどり、最初に見つかった root = true のファイルで止まります。

いいえ。EditorConfig はどのエディタでも空白や改行コードといった基本を扱います。Prettier や言語ごとのリンターは、より踏み込んだスタイル規則(クォート、セミコロン、末尾カンマなど)を扱います。両者は互いを補い合う関係です。

リポジトリ内の Windows ツールが実際に必要とするなら end_of_line = crlf を設定します。より良い方法は、end_of_line = lf をコミットしたうえで .gitattributes* text=auto を追加することです。こうすると git がコミット時に改行コードを正規化し、チェックアウト時は OS に合った改行になります。

いいえ。選択した内容はファイルを生成するためだけに使われ、サーバーには何も保存されず、ページを離れた後も残りません。

関連ツール

このツールは他の言語でも利用できます