以下自分用のメモを兼ねて書いておきます。お気に入りの設定が見つかり次第追記していきます。
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はあらゆるエディタで共通のコーディングスタイルを提供してくれる素晴らしいプラグインです。
これは本来プロジェクトに自分の設定を付けて、それを他の環境や他の人が開いた時に同じように表示されることを目的としているっぽいですが、うまく使えば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