こんにちは。NIKKOエンジニアのS.TKです。今回は簡単に導入できるエディタ設定の共有ツールを紹介したいと思います。
皆さんは開発の際にインデントをタブ、スペースのどちらにするか、文字エンコーディングを何にするか等のルールで揉めた経験はありませんか?また、ルールを決めても結局守られなかった……といった経験はありませんか?
今回紹介する EditorConfig は、こういう問題に対する解決策の一つです。
EditorConfigとは
EditorConfig は異なるエディタ、 IDE 間で編集ルールを統一することができるツールです(公式ページ)。
多くのエディタと IDE が対応しており、設定ファイルを置くだけで有効になるため、導入はとても簡単です。有名どころでは以下のエディタ、 IDE が対応しています(詳細は公式ページを参照)。
- Notepad++
- Atom
- Emacs
- Vim
- Eclipse
- NetBeans
- IntelliJ IDEA
導入方法
ファイルと同じ階層に設定ファイル( .editorconfig )を置けば導入完了です。エディタまたは IDE が EditorConfig に対応していることを確認してください。
.editorconfig ファイルはこんな感じに書きます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# この設定ファイルがトップ(これより上の階層の設定ファイルは見ない) root = true # 全ファイル共通 # 改行コードはWindows形式とする # 文字エンコーディングはUTF-8とする # 行末の空白は削除する [*] end_of_line = crlf charset = utf-8 trim_trailing_whitespace = true # makrdownファイル用 # markdown形式は行末の空白に意味があるので削除しない [*.md] trim_trailing_whitespace = false |
EditorConfig の設定ファイル
設定ファイルは .editorconfig という名前の INI 形式ファイルです。 [ と ] でセクションを指定し、 name = value でプロパティを設定します。また、コメントは # か ; で開始します。
設定の優先度
結論から言うと、開いたファイルに近い .editorconfig の設定値が優先されます。具体的な優先度は以下のようにして決められます。
- 開いたファイルと同階層から上位の階層へと順番に .editorconfig を探索する。
- 最上位階層に到達するか、rootプロパティにtrueが指定されている .editorconfig を発見したなら探索を止める。
- 見つかった .editorconfig を上位階層から順番に適用する。よって同じプロパティに異なる値が設定されている場合、開いたファイルに一番近い .editorconfig の設定値が優先される。
セクションの形式
セクションにはルールを適用するファイルをワイルドカード等を使用して指定します。実際に使用できるパターンは以下のとおりです。
なお、特殊文字を文字として使いたい場合はバックスラッシュでエスケープしてください。
パターン | 説明 |
---|---|
* | パス区切り文字( / )以外の任意の文字列にマッチ。 |
** | パス区切り文字( / )も含めた任意の文字列にマッチ。 |
? | 任意の1文字にマッチ。 |
[name] | nameに含まれている任意の1文字にマッチ。 |
[!name] | nameに含まれていない任意の1文字にマッチ。 |
{s1,s2,s3} | カンマ区切りで与えられた文字列のいずれかにマッチ。 |
{num1..num2} | num1からnum2までの範囲の整数値にマッチ。 |
プロパティの一覧
プロパティにはファイルに適用するルールを指定します。実際に使用できるプロパティは以下のとおりです。
なお、プロパティを設定しなかった場合は、エディタまたはIDEの設定がそのまま使われます。
プロパティ名 | 設定可能な値 | 説明 |
---|---|---|
indent_style | tabspace | インデントの形式を指定する。tabはタブ、spaceはスペースを使用する。 |
indent_size | 数値tab | インデント時のスペースの個数を指定する。tabを指定した場合、tab_widthプロパティの指定値を適用する。 |
tab_width | 数値 | タブを表現するためのスペースの個数を指定する。デフォルト値としてindent_sizeプロパティの値が指定されているので、通常は設定する必要なし。 |
end_of_line | lfcrcrlf | 改行コードの形式を指定する。 |
charset | latin1utf-8utf-16beutf-16le | 文字エンコーディングを指定する。 |
trim_trailing_whitespace | truefalse | trueの場合、行末の空白文字を削除する。 |
insert_final_newline | truefalse | trueの場合、ファイル保存時にファイル末尾が改行記号でなければ改行記号を付与する。 |
root | true | trueの場合、このファイルより上位の階層の .editorconfig ファイルを探索しない。 |
まとめ
今回は、エディタ設定を共有するツールとしてEditorConfigを紹介しました。対応しているエディタ、IDEであれば設定ファイルを置くだけで導入できますので、是非試してみてください。