ATOM
EditorConfig

Atomで快適な生活を送る方法

More than 3 years have passed since last update.

以下自分用のメモを兼ねて書いておきます。お気に入りの設定が見つかり次第追記していきます。


Atomとは

AtomはGitHubで開発されているエディタです。どうやらChromiumベースらしく、編集画面はWebページとしてレンダリングされているらしい。


ソフトタブを使う

タブにはハードタブとソフトタブがあります。ハードタブは通常のタブでソフトタブはスペースを複数入れることでタブの代わりとするものです。僕はソフトタブ派なのでまずソフトタブにします。ちなみにソフトタブ/ハードタブの設定は下のEditorConfigを使うことでも設定できます。EditorConfigを使えば言語ごとにソフト/ハードの設定ができるので、EditorConfigを使う人はわざわざAtomの設定を変える必要はないかもしれません。

設定は環境設定を開き、(Macなら+,)下の方にあるSoft Tabsのチェックボックスをチェックするだけです。確か再起動しないと設定が反映されないので再起動してください。ソフトタブが有効になっているはずです。ですがハードタブで書かれたファイルを開くとハードタブの文章だと認識してくれるらしくハードタブになってしまいます。ハードタブ/ソフトタブの変換をしてくれるパッケージで全てソフトタブにするとその後はソフトタブで入力できます。


Soft Wrapなど…

Soft Tabsの下にSoft Wrapなどの項目があります。Soft Wrapはウィンドウの幅が1行の文字列よりも短くなった時に折り返してくれる機能です。Webページでは閲覧する人の環境に合わせて1行の文字数を自動で変えてくれますがまさにそれです。

Soft WrapをオンにしたらAtomを再起動してください。長い行を打ってからウィンドウの幅を短くすると折り返して表示してくれるはずです(折り返されて1行が複数行になりますがあくまで見た目だけであってテキストファイルとしては1行のままです)。

Soft Wrap At Preferred Line Lengthは1行が指定した文字数に達するとそこでSoft Wrapしてくれる機能です。文字数の指定は上の方にPreferred Line Lengthというフィールドがあります。初期値は80のようです。

Show Indent Guideはタブがいくつ入っているかを教えてくれる機能です。オンにするとタブとタブの間に|(縦線)が入るのでタブ幅2のタブが2つなのかタブ幅4のタブが1つなのかがわかるというわけです。

Show Invisiblesはスペースやタブ、改行などの文字としては見えない制御コードを記号として表示してくれます。

Show Line Numbersはもちろん行番号の表示設定です。


EditorConfigを使う

EditorConfigはあらゆるエディタで共通のコーディングスタイルを提供してくれる素晴らしいプラグインです。


EditorConfig


これは本来プロジェクトに自分の設定を付けて、それを他の環境や他の人が開いた時に同じように表示されることを目的としているっぽいですが、うまく使えばAtomのコーティングスタイルの設定に使えます。

EditorConfigは開いたファイルのディレクトリとそれより上のディレクトリにEditorConfigの設定ファイルがあるかどうかを探し、一番上層にある設定ファイルの設定が適用されるようです。または設定ファイルにroot=true が書いてあるとそこで捜索を中止するようです。

そこで、ホームディレクトリにroot=true が書いてある設定ファイルを置いておけばホームディレクトリ以下にあるファイル全てに設定が適用されるので実質エディタの設定になります。.bash_profile的な感じですかね。


EditorConfigのインストール

Atomで設定を開いてパッケージからEditorConfigで設定をかければでてきます。


EditorConfigの設定ファイル

設定ファイルは.editorconfigというファイル名です。設定の書き方は調べてください。

一応ページに載っているサンプルを引用しておきます。

# EditorConfig is awesome: http://EditorConfig.org

# top-most EditorConfig file
root = true

# Unix-style newlines with a newline ending every file
[*]
end_of_line = lf
insert_final_newline = true

# 4 space indentation
[*.py]
indent_style = space
indent_size = 4

# Tab indentation (no size specified)
[*.js]
indent_style = tab

# Indentation override for all JS under lib directory
[lib/**.js]
indent_style = space
indent_size = 2

# Matches the exact files either package.json or .travis.yml
[{package.json,.travis.yml}]
indent_style = space
indent_size = 2