Septeni Engineer's Blog

セプテーニエンジニアが綴る技術ブログ

editorconfigでエディタの設定を共通化

新卒1年目の東です。

僕はもともとvimをメインで使っており、rubyを書いていました。javascriptを書いていた時期はsublime textを、scalaを書くようになってからは intellijを使うようになりました。複数のエディタを使うようになると、インデントの整え方など共通して使える方法があれば便利ですよね。

そんな問題を解決してくれるのが、editorconfigです。

editorconfig.org

対応環境

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-8latin1に設定できる、文字コードの設定
  • 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

インデントはもちろんですが、行末空白削除も非常に役立つと思います。

実は公式のページに載っている上記以外にも、vimemacsにはmax_line_lengthという設定項目があったりします。 設定項目の詳細についてはこちらを参照してください。