私は20年来の「秀丸」ユーザでかつ重度の秀丸依存症なのだが,今まではともかく,これからも「Windows で秀丸」というわけには恐らくいかないので,マルチプラットフォームで使えるエディタを探している。
いくつか試してみたが,やはり ATOM Editor が相当だろう,と思うようになった1。 Visual Studio Code は MS 製品にしては面白いと思うし, .NET 5 のリリース時期あたりにはかなり良くなってる可能性もあるのだが,まだできないことのほうが多い。 Sublime Text は(Windows 版はあるけど)なんとなく Mac 用という印象。
そこで, ATOM Editor を実用性の観点から評価してみる。観点は以下のとおり。
- Windows 環境でのインストールや運用の簡易さ
- できるだけ少ない機能拡張(基本機能でどこまでできるか)
- 秀丸との比較
ATOM Editor のインストール
Windows 版は,インストールパッケージ(実行形式)をダウンロードしてインストールすればよい。
2015年6月25日に 1.0 が出た。おめでたう!
Beta Channel が登場。
2017年2月8日 に出た 1.14 stable の Windows 版で64ビットバージョンが登場した。
Proxy 設定
Firewall/Proxy で囲まれている環境ではパッケージの検索・インストールがうまくいかないので, HTTPS の Proxy サーバを指定する必要がある。指定には apm コマンドを使う。
C:>apm config list -l
; cli configs
globalconfig = "C:\\Users\\username\\.atom\\.apm\\.apmrc"
user-agent = "npm/2.5.1 node/v0.10.35 win32 ia32"
userconfig = "C:\\Users\\username\\.atom\\.apmrc"
; globalconfig C:\Users\username\.atom\.apm\.apmrc
cache = "C:\\Users\\username\\.atom\\.apm"
; node bin location = C:\Users\username\AppData\Local\atom\app-1.0.0\resources\app\apm\bin\node.exe
; cwd = C:\Users\username
; HOME = C:\Users\username
; 'npm config ls -l' to show all defaults.
C:>apm config set https-proxy http://username:password@proxy.exsample.com:8080
C:>apm config list -l
; cli configs
globalconfig = "C:\\Users\\username\\.atom\\.apm\\.apmrc"
user-agent = "npm/2.5.1 node/v0.10.35 win32 ia32"
userconfig = "C:\\Users\\username\\.atom\\.apmrc"
; userconfig C:\Users\username\.atom\.apmrc
https-proxy = "http://username:password@proxy.exsample.com:8080"
; globalconfig C:\Users\username\.atom\.apm\.apmrc
cache = "C:\\Users\\username\\.atom\\.apm"
; node bin location = C:\Users\username\AppData\Local\atom\app-1.0.0\resources\app\apm\bin\node.exe
; cwd = C:\Users\username
; HOME = C:\Users\username
; 'npm config ls -l' to show all defaults.
多分 Windows 特有の問題だと思うけど,同じツールをあちこちにインストールさせるのは何とかならないのだろうか。 node.js は既にインストール済みやっちうねん。少なくとも PATH 上に存在してるなら存在の有無とバージョンは確認できるんだから確認しろよ。だれがバージョン管理すると思うとるんや。あと,アプリケーションごとに Proxy の設定をさせるのもウザい。 Windows の設定を使えよ。この辺 Linux や Mac の人とかどうしてるの。
参考: プロキシで苦しむ人へ プロキシ設定チートシート - Qiita
機能の詳細
Font Family の選択
エディタのフォントは作業効率に大きく影響する。これは私個人の感覚だが,日本語の地の文章がゴシック体なのは辛い。いくら綺麗だからといって Meiryo フォントをエディタに使う気にはならない。ただし,コードに関しては視認性が一番重要。ということで, “Font Family” の項目に以下を指定してみる。
Inconsolata, "MS Mincho"
Inconsolata は何かと便利なので OpenType フォントを取ってきて「インストール」してしまえばよい。「游ゴシック 游明朝フォントパック」が使える場合にはこれを使う手もある。この場合は
Inconsolata, "Yu Mincho"
とすればよい。ちなみに IPA 明朝は線が細すぎて不向きだった(まぁ印刷用に特化したフォントだからね。 IPA は Web Font 用の IPA 明朝/ゴシックフォントを開発すべき)。
Windows では Tree View のフォントが汚いので、ここは素直に Meiryo UI フォントに変える。 %USERPROFILE%\.atom\styles.less
を以下のように変更する。
.tree-view {
font-family: "Meiryo UI";
}
また
atom-workspace {
font-family: "Meiryo UI";
}
とすればタブや Settings 画面のフォントも変えられる。
Soft Wrap が CJK に対応した
ATOM 1.2 から Soft Wrap が CJK に対応した。ので japanese-wrap はなくても大丈夫になった。なお, japanese-wrap と同じ作者による wrap-style では wrap style を細かく制御できる。お勧めである。
- ATOM 1.2からCJKのSoft Wrapが公式対応されたのでjapanese-wrapのパッケージが必要なくなりました。 - Qiita
- Atomで上手にwarpを刻んでくれるwrap-styleを開発しました。 - Qiita
Markdown ファイルの場合は Soft Wrap を無効にしても, Preferred Line Length を 1024 とか大きい値にしても,アプリケーションの Window 幅で折り返してしまう(プレビューで折り返しが必要だから?)。
EditorConfig のススメ
EditorConfig は今やコード書きには必須の機能だが,それ以外の人にも是非使って欲しい。人によって手持ちのプラットフォームが異なるのはもはや当たり前なので, EditorConfig でスタイルを統一することはとても重要。 ATOM では以下のパッケージがある。公開してくださった方に感謝。
ちなみに秀丸でもマクロで EditorConfig を読み込み可能。
私は,仕事以外の環境での EditorConfig 設定を以下のようにしている。
root = true
[*]
end_of_line = lf
charset = utf-8
indent_style = tab
indent_size = 4
trim_trailing_whitespace = false
insert_final_newline = false
[*.md]
insert_final_newline = true
[*.{js,java,go,c,cpp,tex}]
trim_trailing_whitespace = true
insert_final_newline = true
[*.{md,c,cpp,tex}]
indent_style = space
indent_size = 4
- 行末の空白は EditorConfig で始末しましょう - Qiita : ファイル読み込み時の文字エンコーディングの自動判別についても紹介
- 【ATOM Editor】 EditorConfig を使うなら Whitespace は不要 — しっぽのさきっちょ | text.Baldanders.info
Theme について
個人的に Dark Theme は見づらい。かといって地が真っ白なのも目に痛いので, UI Theme は “One Light”, Syntax Theme は “Solarize Light” にしている。わざわざ Theme をダウンロードする必要はなく、 Core の Theme で充分。まぁ仕事で使う場合は Theme を統一させられるかもしれないけど。
ただし弱視の人や色覚障害の人はそれなりの Theme を導入する必要があるかもしれない。
Tree View のファイルのアイコンがそっけないので, file-icons を入れる手もある。公開してくださった方に感謝。
(追記:atom-monokai Syntax Theme というのがあって, UI Theme によって Dark と Light を自動的に切り替えてくれるようだ。最近はこっちを使っている → 更に追記:atom-monokai は Light の対応を止めてしまったようだ。まぁ最近は Dark にも目が慣れてきたのでいいんだけど)
Git 関連機能
GitHub が作ったという割には git 機能が貧弱なのは何故なのだろう。特に git-plus 相当の機能が Core パッケージに入ってないのは解せぬ。というわけで以下をインストールした。公開してくださった方に感謝。
git-plus は主にコマンドパレットで操作するが(メニューの「Packages」からも辿れる),コマンドパレットの呼び出しを f1 キーに割り当てたらだいぶ使いやすくなった。
git-control は GUI で最初の頃は便利だったのだが, [git-plus] が手に馴染んできたら使わなくなった。 git-control が, submodule の処理が得意ではないっぽいのもマイナス。
矩形選択
矩形選択用に %USERPROFILE%\.atom\keymap.cson
ファイルに対して以下のキー設定を行った
'body':
'alt-shift-down': 'editor:add-selection-below'
'alt-shift-left': 'core:select-left'
'alt-shift-right': 'core:select-right'
'alt-shift-up': 'editor:add-selection-above'
これで Alt+Shift キーを押しながらカーソルを上下左右に動かせば矩形選択ができる。実はこれらの操作のキー割り当ては元々こうなっている。
Keybind | コマンド |
---|---|
ctrl-alt-down |
editor:add-selection-below |
ctrl-alt-up |
editor:add-selection-above |
shift-left |
core:select-left |
shift-right |
core:select-right |
ただし,うちのパソコンでは Ctrl+Alt キーを押しながらカーソルを動かすと(Windows がキーを横取りして)ディスプレイの向きが変わってしまうので,かなり切ないことになってしまう。
実際には editor:add-selection-below
および editor:add-selection-above
はマルチカーソル・モードのコマンドである。マルチカーソル・モードは癖がある感じだが慣れれば結構使えるかも。
キーボード操作ではなく,マウス操作で矩形選択がしたい場合は sublime-style-column-selection を導入するとよい。 Windows ではマウスのセンターボタンを押しながらマウスを動かす。
いずれのやり方でも,日本語混じりのテキストではうまくいかない。これは上述した行の折り返しの問題と同じと思われる。やれやれ。
その他 既存パッケージによる操作
私がよく使うコマンドを挙げておく。(個人的な都合で一部 keybind を変更している)
Keybind | コマンド | 内容 | 変更した keybind |
---|---|---|---|
f3 |
find-and-replace:find-next |
次を検索 | |
shift-f3 |
find-and-replace:find-previous |
前を検索 | |
ctrl-, |
application:show-settings |
設定画面 | |
ctrl-f |
find-and-replace:show |
検索と置換 | |
ctrl-g |
go-to-line:toggle |
行番号を指定してジャンプ | |
ctrl-k ctrl-l |
editor:lower-case |
小文字に変換 | |
ctrl-k ctrl-u |
editor:upper-case |
大文字に変換 | |
ctrl-p |
fuzzy-finder:toggle-file-finder |
ファイル検索 | |
alt-delete |
editor:delete-to-end-of-subword |
単語を削除 | ctrl-delete |
alt-backspace |
editor:delete-to-beginning-of-subword |
直前の単語を削除 | ctrl-backspace |
alt-left |
editor:move-to-previous-subword-boundary |
直前の単語区切りまで移動 | ctrl-left |
alt-right |
editor:move-to-next-subword-boundary |
直前の単語区切りまで移動 | ctrl-right |
ctrl-shift-D |
editor:duplicate-lines |
行の二重化 | shift-f10 |
ctrl-shift-K |
editor:delete-line |
行を削除 | |
ctrl-shift-F |
project-find:show |
grep 相当のファイル検索 | |
ctrl-shift-P |
command-palette:toggle |
コマンドパレット | f1 |
もともと ctrl-delete
に割り当てられている editor:delete-to-end-of-word
は挙動が大雑把すぎて使いづらいので,(もともと alt-delete
に割り当てられてる)editor:delete-to-end-of-subword
に機能を振りなおした。同様に ctrl-backspace
, ctrl-left
, ctrl-right
も alt-*
の機能を振りなおした。いや, alt キーって押しにくいのよ。
最終的なキー設定は Gist に貼り付けたので,よろしかったら参考にどうぞ。
- 自動保存を行う Core パッケージ autosave は既定で無効になってる。私は git-plus で commit する前に保存するのをどうしても忘れるので,これを有効にしておくと吉。
- Core パッケージ tabs の設定で “Enable VCS Coloring” を有効にするとタブに表示されているファイル名が色分けされて表示される。ブラボー!
- Core パッケージ git-diff の設定で “Show Icons In Editor Gutter” を有効にすると差分情報がちょっとだけ見やすくなる。
- インデントをそろえるために highlight-column を紹介しているページを見かけたけど,インデントをそろえる目的なら,標準の Settings(ctrl-,)で “Show Indent Guide” にチェックを入れておく方が吉。
not([mini]) ?
最近の ATOM で、以前は atom-text-editor
カテゴリだった keybind 設定が atom-text-editor:not([mini])
とかなっているものがある。 not([mini])
って何? と思ってググったら
The :not([mini]) part tells Atom not to use the keybinding on atom-text-editor elements with a mini attribute. Mini text editors are the one-line text inputs found in the settings view (and other places). So you use atom-text-editor:not([mini]) when you want a keybinding to apply only to code text editors.
なんだそうだ。 %USERPROFILE%\.atom\keymap.cson
の設定を見直さないと。
その他 不足機能の追加
「秀丸にあるのに ATOM にねーよ」とかいった機能を追加していく。公開してくださった方に感謝。
- 秀丸では大変重宝したアウトライン解析。symbols-tree-view があればアウトライン解析を行って右側のサイドバーに表示する。
- japan-util : 全角・半角変換機能。英数字を全角で書いたり仮名文字を半角で書いたりするバカがいるので,意外と使うのよ,これ。
-
highlight-line でカーソル行をハイライトにしたり下線を引いたりできる。色のカスタマイズは
%USERPROFILE%\.atom\styles.less
ファイルで行う。 - open-recent は最近開いたファイルやフォルダを覚えておいてくれる便利なやつ。てか,なぜこれが標準で搭載されてないのだ。
-
show-ideographic-space : いわゆる「全角空白」を視覚化してくれる。見せ方は
%USERPROFILE%\.atom\styles.less
ファイルでカスタマイズ可能。実際には IME のプロパティでスペース・キー押下で常に「半角空白」を入力するように設定すればほとんど防げるんだどね(全角空白を入力する場合はshift-space
押下)。
その他 追加したい便利な機能
これまで述べた機能以外で「これあったら便利かなぁ」という機能を挙げてみる。実際に入れるかどうかは別。
- autocomplete-paths は結構便利だったが必須というほどではないな。
- autoclose-html : HTML 入力でタグを入力すると自動的に閉じタグを補完してくれる。自動補完の機能は色々あって,大抵は autocomplete-plus のサブパッケージだったりするのだが,これだけは毛色が違う(笑)
- linter : lint ツール。多くの言語に対応しているが,実際に動かすには lint 本体を導入する必要あり。
- merge-conflicts : conflict 時のヘルパーツール。
-
term2 : タブ内にターミナルを起動できる。内部で
pty.js
をビルドしようとするが, Windows 環境では Visual Studio 等の開発環境が必要らしい? - web-view : タブ内にブラウザを起動できる。
- スクラッチパッドみたいなんないのん? と思って探していたのだが, tempfile というパッケージが登場した。ファイルタイプを指定できる。またファイルの保存先を指定できるため,適当に書き散らしたものを保存することも可能。
- 特定の単語をマークしておける quick-highlight が結構使える。 Windows だとキーに割り当てられないので、 toggle を適当なファンクションキーとかに割り当てておくとめっさ便利。
- tablr : CSV Editor。なにこれ素敵!
- markdown-pdf : markdown 文書を PDF に変換してくれるらしい
継続調査(欲しい機能)
順次更新予定。
- grep。
project-find
ではなくて普通の grep。 Windows には grep は標準ではないので,今まではエディタ内蔵の grep を使ってた。 - 結城浩さんの amazon.mac が結構便利でよく使うのだが,同等の機能のものがないだろうか。処理自体は簡単だし自前で作る手もあるが,それならちゃんとパッケージについて勉強しないとなぁ。 → 自作しました
- ファイル読み込み時の文字エンコーディング自動判別は自前で何とかできたが,あとは文字エンコード変換かぁ → auto-encoding パッケージで自動判別できるようだ
ちなみに,10万行の CSV ファイル(Shit-JIS エンコード)を読み込ませたら,文字エンコード変換中にハングアップした。たかだかそれくらいで動かなくなるとか,まだまだ秀丸は手放せないなぁ sigh...
ブックマーク
設定全般(みんな設定ってどうやってるの?)
- ATOMエディタのproxy設定 - Qiita
- EditorConfig で簡単にエディタの設定を共有する | イントフロート スタッフブログ
- Atomで快適な生活を送る方法 - Qiita
- Atom Editor 俺の設定とプラグインをさらす - Qiita
- Tumbling Dice — Atom やっておきたい設定+入れておきたいパッケージメモ
- Atom でインストールしている package 一覧 - Qiita
- SublimeText から Atom に乗り換えた時にやった設定とインストールしたパッケージ | rythgs.co
- WindowsでAtomをインストールして使ってみる - Qiita
- Atom の package で定義されているキーバインドを変更する方法 - Qiita
- Atomで特定のキーバインドによる操作が遅い場合の対策 - Qiita
- ATOM でファイルを開いたら自動文字コード判定を行う - Qiita
- Rails開発用のAtomエディタの設定メモ(2015年版) - Qiita
- atomでキーマクロ - Qiita
- Atom apmの使い方 - Qiita
- 【Atom】Web開発者達によるWeb開発者の為のエディターについて - Qiita
- Atom のツリーとタブのフォントを変更する - Qiita
- AtomでTypeScriptの環境を構築する - Qiita
- ブラウザと同じキーマップで、Inspect Element - Qiita
- Atomエディタでデフォルトのキーバインド(ctrl-shift-K)を無効にする - Qiita
- Atomのスペースをはっきり見えるようにする - Qiita
- atomのmarkdown-previewで日本語が豆腐になる(Ubuntu) - Qiita
- 【atom】シンタックスカラーが気に入らないなら、自分で作ればいいじゃない - Qiita
- Atomエディタで本文1行目をタブに表示する方法 - Qiita
- Atomエディタ ver1.0.8で前から欲しかった機能が2つ追加されていた - Qiita
- Atomエディタの背景画像を設定するのに苦労したこと【Windows】 - Qiita
- apm loginすると
EINVAL, invalid argument
で止まる - Qiita - Atomでvim-modeのカーソルが見辛いのを解消する - Qiita
- 1つのキーバインドで、同時に複数のコマンドを実行する - Qiita
- atomで最終行を改行させない - Qiita
- Atomをvimっぽくするプラグイン5選 - Qiita
- Atomのwebview内のフォントを変更する - Qiita
- atom markdown-preview用のスタイル - Qiita
- 備忘録:Atom - Qiita
- Atomに本当のAutoSave機能をつける - Qiita : autosave を使うんじゃなくてタイマを仕掛けて定期的に保存する方法
- Atomで行移動(moveLineUp/moveLineDown)時のオートインデントをオフにする方法 - Qiita : オートインデントの挙動がおかしい場合にどうぞ
- Atomが”editor is not responding”になったら - Qiita
- Atom レジストリエントリを含むアンインストール方法(Windows版) - Qiita
- Atom Editor を EDITOR 環境変数に設定する - Qiita
- Atom 1.7からタブ切り替えが使いづらくてイライラするので従来式に戻す - Qiita
各種パッケージ設定
- EditorConfigで文字コード設定を共有して喧嘩しなくなる話。(Frontrend Advent Calendar 2014 – 14日目) | Ginpen.com
- Atom で超快適に Git を扱うためのプラグインと設定
- Atomの設定を共有・移行するときはsync-settingsがオススメ - Qiita
-
AtomでMarkdown+数式を利用する - Qiita :
markdown-preview
をmarkdown-preview-plus
で置き換える -
AtomエディタでPHP(+HTML)がシンタックスハイライトされないのを解消 - Qiita :
file-types
パッケージを使う -
ATOMで開き括弧を入力した時に、閉じ括弧を自動で入力するのをやめる - Qiita : Core パッケージの
bracket-matcher
の設定を無効にする - atomをevernoteのmarkdownエディタとして使う(EVND) - Qiita
- AtomでSublimeTextみたいに保存しないで終了しても再開できるやつ - Qiita : save-session があるじゃない。という話
- atom から gist にコードをアップする gist-it を試す - belog
- 【atom】atomでgistを作るには - Qiita
- Atomのパッケージが急に動かなくなった! - Qiita : パッケージの修復方法
- Atomに現在日時を挿入するコマンドを追加する - Qiita
- ATOMでながら作業が捗るパッケージ紹介 - Qiita
- Atom でリモートのファイルを操作するプラグイン remote-ftp | Lonely Mobiler : remote-ftp の使い方 FTP/FTPS/SFTP が使えるようだ。 Windows 環境では pageant が使えるらしい
- こんなのがあるのはAtomだけ?尖りまくってるパッケージ紹介【随時(たまーに)更新】 - Qiita
- Atom でエンコーディングを自動判別するパッケージ auto-encoding - Qiita
- Atomのウィンドウを半透明にする方法 - Qiita
- Windows 10 で Atom の Term3 を入れる(たぶん)最小の方法 - Qiita
- Atomのscriptパッケージでbundle exec付きで実行する - Qiita
- JSON・CSVからピボットテーブルを作ってくれるAtomパッケージ - Qiita
- gitでcloneしてきたAtomのPackageをインストールする - Qiita
- ATOM Editor で Amazon Associate ID を含んだ商品 URL を生成する — しっぽのさきっちょ | text.Baldanders.info
パッケージを作ってみた
- AtomでローカルのPackageをインストールする方法 - Qiita
- toggle つくった - Qiita
- atomで単語削除を拡張するパッケージを作った - Qiita
- smalls つくった - Qiita
- AtomパッケージのTips - Qiita
- MermaidのプレビューができるAtomパッケージを作った - Qiita
- Package 作成時の便利フレーズ、知識など - Qiita
- Atomプラグイン作成入門 ハンズオン形式でプレビュー型プラグインを作ってみよう! - Qiita
- Atomでパッケージを作ってみた その2 - Qiita
- Atomでパッケージを作ってみた その3 - Qiita
- Atom エディタの自作パッケージで子プロセスを呼ぶ方法 - Qiita
- Atomでファイルを読み書きするパッケージを作る際にUTF-8以外の文字コードにも対応する方法メモ - Qiita
- Riot.js向けのSyntax Highlightをプラグインにしました (Atom用) - Qiita
- 他パッケージのモジュールをロードする - Qiita
- 書き捨てファイルを作成するtempfile Packageをリリースした - Qiita : なんか上手く動かない
- Atomで翻訳系API呼び出すパッケージを作った - Qiita
テーマを作ってみた
ATOM で開発環境を整える
- AtomでGoを書く環境を整える(Windows) - Technically, technophobic.
- Haskell開発環境の構築 (Windows編) - Qiita
- SFDC:MavensMate for Atomを試してみました - tyoshikawa1106のブログ
- AtomでCoffeeScriptの開発環境を整える - Qiita
- atomをリモートサーバのエディタとして使う(nuclide-server) - Qiita
- 快適Haskell環境構築! (ghc-modがエラーで動かない方へ) - Qiita
- ATOMをR言語に対応させる方法 - Qiita
- 【新人教育 資料】UMLまでの道 〜クラス図を書いてみよう編〜 - Qiita : ATOM でクラス図が描ける!
- AtomとPlantUMLで爆速UMLモデリング - Qiita
- AtomでRailsを爆速開発する環境を作ってみた - Qiita
- atomでオープンソースSwiftを使って遊ぶ - Qiita
- AtomでSalesforceの開発環境構築 - Qiita
- Atomのterminal-plusが動かないのでplatformio-ide-terminalを入れてみた | spiffieldLabs
- ATOMでJavaScriptの最強開発環境を作る - Qiita
- AtomにESLint導入した - Qiita
ATOM TeX 環境を整える
その他 四方山話
- Atom Editorを使う - Qiita : Atom API について
- SublimeText - Atomを使って感じた、やっぱりSublime Textが良い理由 - Qiita
- GitHub、コードエディター「Atom」v1.3を公開。インストール不要のポータブル版を追加 - 窓の杜
- 私がどのようにしてAtomの奇妙なバグを修正したか : 正規表現が暴走を起こすとき | プログラミング | POSTD
- GitHub、オープンソースのテキストエディター「Atom」の最新正式版v1.6.0を公開 - 窓の杜 : かなり色々変わったらしい
- Atom Flight Manual(Atom Editorのチュートリアル)をざっと訳してみるテストw - Qiita
- atomで置換を使って連番テキストを作る - Qiita
- GitHub、オープンソースのテキストエディター「Atom」の最新正式版v1.7を公開 - 窓の杜