新卒1年目の東です。
僕はもともとvimをメインで使っており、rubyを書いていました。javascriptを書いていた時期はsublime textを、scalaを書くようになってからは intellijを使うようになりました。複数のエディタを使うようになると、インデントの整え方など共通して使える方法があれば便利ですよね。
そんな問題を解決してくれるのが、editorconfigです。
対応環境
vim, emacs, sublime textや、xcode, visual studio, intellijなどに対応しています。各エディタに対してプラグインとして導入しますので、sublimeであればpackage controlで導入してください。intellijなど一部はネイティブサポートされています。 また、githubに対してchrome拡張としてもリリースされています。 詳しくは公式を参照してください。
設定ファイル
以下の設定可能項目を用いて、.editorconfig
ファイルに内容を記述します。
- indent_style
tab
,space
に設定でき、それぞれがハードタブ、ソフトタブに対応 - indent_size
indent_style = space
時のソフトタブ幅を設定 - tab_size
indent_style = tab
時のハードタブ幅を設定 - end_of_line
lf
,cr
,crlf
をそれぞれ改行コードとして設定 - charset
utf-8
やlatin1
に設定できる、文字コードの設定 - trim_trailing_whitespace boolean値で行末の空白の削除を設定
- insert_final_newline boolean値でファイル末尾に空行の挿入を設定
- root
boolean値で、ファイルを開いた際の上位階層への
.editorconfig
ファイルの探査をその階層で打ち切る
また、設定を適用するセレクタの記法は以下の通りです。
- *
区切り
/
を除く任意の文字列 - ** 任意の文字列
- ? 任意の1文字
- name
name
に一致するファイル - !name
name
に一致しないファイル - {s1,s2,s3}
s1,s2,s3
いずれかに一致するファイル
設定例は以下の通りになります。
# ~/.editorconfig
root = true
[*]
indent_style = space
indent_size = 4
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[*.html]
indent_style = tab
[*.scala]
indent_size = 2
[{build.sbt,application.conf}]
indent_style = space
indent_size = 2
インデントはもちろんですが、行末空白削除も非常に役立つと思います。
実は公式のページに載っている上記以外にも、vimとemacsにはmax_line_length
という設定項目があったりします。
設定項目の詳細についてはこちらを参照してください。