
EditorConfig とは
.editorconfig というファイルにインデントのスタイルや改行コード、文字エンコーディングの指定を書いておくことで、各種IDEやエディタの設定を統一できます。
.editorconfig は以下のような形式でエディタの設定を指定します。
root = true [*] end_of_line = lf charset = utf-8 trim_trailing_whitespace = true insert_final_newline = true indent_style = space indent_size = 4 [*.{ts,tsx,js,jsx,json,css,scss,yml}] indent_size = 2 [*.md] trim_trailing_whitespace = false
.editorconfig をバージョン管理に入れておくことでチーム開発がはかどります。
対応IDE/エディタ
2020年9月時点で、デフォルトで EditorConfig に対応するIDE/エディタには以下があります。

プラグインにより導入可能な IDE/エディタには以下があります。

EditorConfig という名前でプラグインを検索すればたいていのエディタで利用できます。
.editorconfig の配置場所
ソースファイルを開くとき、開いたファイルのディレクトリと全ての親ディレクトリにある .editorconfig を探します。
以下の設定がある .editorconfig が見つかるまで親ディレクトリを辿ります。
root = true
設定は読まれた順に適用されるので、より近いファイルのプロパティが優先されます。
.editorconfig は上から順番に読み込まれ、見つかった最新のルールが優先されます。
.editorconfig の書式
- UTF-8で記載
- コメントは
;か#で始める - セクションヘッダーは
[で始まり]で終わる- ファイルパスのグロブを指定
- セクションはセクションヘッダーから始まり、次のセクションヘッダーの先頭またはファイルの末尾までの行
- キーと値のペアは
=で区切る
セクションヘッダーは以下のように指定できます。
| 特殊記号 | 説明 |
|---|---|
* |
パス区切り文字(/)を除く任意の文字列 |
** |
任意の文字列 |
? |
パス区切り文字(/)を除く任意の1文字 |
[seq] |
seqの任意の1文字 |
[!seq] |
seqにない単一の文字 |
{s1,s2,s3} |
指定された文字列のいずれか |
{num1..num2} |
num1からnum2の間の任意の整数 |
エスケープには \\ を使用します。
.editorconfig による設定
EditorConfig 0.14.0 の仕様では以下があります。
| キー | 値 |
|---|---|
| indent_style | インデントスタイルとしてtabかspace を指定 |
| indent_size | インデント幅を整数で指定 |
| tab_width | タブ幅を整数で指定。デフォルト値は indent_size になるため通常設定しない |
| end_of_line | 改行lf crlf cr のいずれかを指定 |
| charset | latin1 utf-8 utf-8-bom utf-16be utf-16le を指定。utf-8-bomはお勧めしません。 |
| trim_trailing_whitespace | ファイル内の改行文字の前にあるすべての空白文字を削除するかを true false で指定 |
| insert_final_newline | ファイルが改行で終わるようにするかを true false で指定 |
| root | 現在のファイルでファイル検索を停止する場合 trueを指定 |
値を空で設定した場合は、以前に設定されていたとしても、値を未設定としてエディターのデフォルトが使用されます。