初めに

EditorConfigは,コーディング規則を各自が使うエディタ間で統一するのに役立つツールです。
コーディングすると時に,インデントの数や改行の位置,「,」を文末にするか文頭にするか等,色々なコーディング規約が提案[^1] されています。
しかし,チームでコーディグする場合,経験や好みによって個々人が好きな書き方をしてしまい,複数のルールが混在することになります。
それを防ぐ手段として,なかなか便利なので,メモがてら公式ページを翻訳・要約記事にしてみました。

[^1]: google HTML/CSS Style Guid w3schools , hanatoweb など。

目次

  1. 初めに
  2. .editorconfigファイルの位置
    1. ワイルドカードパターン
    2. サポートされているプロパティ
  3. 終わりに
  4. 参考HP

以下は、.editorconfigPythonおよびJavaScriptファイルの行末およびインデントスタイルを設定するファイルの例です。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# 公式ページのURL: https://EditorConfig.org

# 一番上のEditorConfig
root = true

# 各ファイルの最後に改行が付いた、Unixスタイルの改行
[*]
end_of_line = lf
insert_final_newline = true

# Matches multiple files with brace expansion notation
# Set default charset
[*.{js,py}]
charset = utf-8

# 字下げ
[*.py]
indent_style = space
indent_size = 4

# タブのインデント (no size specified)
[Makefile]
indent_style = tab

# Iibディレクトリ配下のすべてのJSに対するインデントの上書き
[lib/**.js]
indent_style = space
indent_size = 2

# 正確なファイルはpackage.jsonまたは.travis.ymlのどちらかと一致します。
[{package.json,.travis.yml}]
indent_style = space
indent_size = 2

これらの内容を「.editorconfig 」ファイルとして保存する。
Windowsで冒頭が「.」のファイルを作るには「.ファイル名.」のように,冒頭と末尾に「.(ピリオド)」を打つ。

.editorconfigファイルの位置

基本的にはプロジェクトのルートに置けばよい。
EditorConfigは,上から下に読み上げられ,見つかった規則から優先して適用されます。
設定ファイルは,大文字と小文字を区別せず,「/(スラッシュ)」のみが使用でき,コメントはoctothorpes(#)またはセミコロン(;)が使用できる。
コメントは行ごとに書き,文字エンコードはUTF-8出なければならない。区切り行はCRLFもしくはLFが使われる。

ファイルパスグロブパターンと現在サポートされているEditorConfigプロパティを以下に説明します。

ワイルドカードパターン

ワイルドカードマッチングのためにセクション名で認識される特殊文字

ワイルドカード 意味
* パス区切り文字(/)を除く、任意の文字列と一致します。
** 任意の文字列に一致
任意の位置文字に一致
[name] 名前の任意の1文字に一致
[!name] 名前に含まれていない任意の1文字に一致
[s1,s2,s3] 指定された任意の文字列(コマンドで区切られている)に一致します
[num1..num2] num1とnum2の間の任意の整数と一致します。ここで、num1とnum2は、正または負のいずれかです。

特殊文字はバックスラッシュでエスケープすることができるので、それらはワイルドカードパターンとして解釈されません。

サポートされているプロパティ

詳しいリストはウィキを参考の事。
主なプロパティは以下のようなものがある。

  • indent_style:ハードタブまたはソフトタブをそれぞれ使用するには、タブまたはスペースに設定します。

  • indent_size:各インデントレベルに使用される列数とソフトタブの幅を定義する整数(サポートされている場合)。tabに設定すると、tab_width(指定されていれば)の値が使用されます。

  • end_of_line:改行の表現方法を制御するには、lf、cr、またはcrlfに設定します。

  • charset:latin1、utf-8、utf-8-bom、utf-16beまたはutf-16leに設定して文字セットを制御します。utf-8推奨

  • trim_trailing_whitespace:改行文字の前の空白文字を削除するにはtrueに設定し、そうでないことを保証するにはfalseに設定します

  • nsert_final_newline:保存時にファイルが改行で終わっていることを確認するにはtrueに、そうでないことを確認するにはfalseに設定します。

  • rootセクションの外側のファイルの先頭に指定する必要がある特殊なプロパティ。現在のファイルでファイル検索を停止するには、trueに設定し.editorconfigます。

プロパティとその値は,すべて小文字で解釈されます。
プロパティが指定されていない場合はエディタと標準設定が使用されます。
必要な項目のプロパティのみ設定し,それ以外の多くは未設定のままにしておくことが推奨されています。

終わりに

ざっと公式ページを翻訳・要約してみました。
テキストファイルに必要な設定だけ書けば,別のエディタ間でも設定を共有できるのは嬉しいですね。
チーム開発で決まった規約が気に入らなかった場合は,チームの規約をEditorConfigに記述し,コーディング時は自分の好きな設定で書いて,提出するときにEditorConfigで成形すればよさそうです。

参考HP

EditorConfig公式
公式GitHub
公式Twitter
公式Wikiのプロジェクトリスト