EditorConfig でエディタのスタイルを統一する

f:id:Naotsugu:20201031022729p:plain


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/エディタには以下があります。

f:id:Naotsugu:20201031022322p:plain


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

f:id:Naotsugu:20201031022333p:plain

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 インデントスタイルとしてtabspace を指定
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を指定

値を空で設定した場合は、以前に設定されていたとしても、値を未設定としてエディターのデフォルトが使用されます。