AtomからVSCodeに乗り換えたので使ってる拡張パッケージを対応表にしてみた

年末年始にAtomの使ってるプラグインを列挙して棚卸しをしたけども、ちょっと前のMSのGitHubの買収を機に食わず嫌いしてたVSCodeを使ってみた。

ただし使うにあたってはAtomで使ってる環境と同程度のことができてくれないとダメなので調べてみた。

結果から言って今はVSCodeに乗り換えてしまった。せっかくなので使ってるAtomとVSCodeの拡張パッケージをそれぞれ対応する表にしてみた。ちなみにもともと「俺のAtomは環境だ」と笑い話的に言っていたのでややAtom寄りの表になってるのはご容赦いただきたい。

使用感比較

拡張パッケージ表に行くまえに使用感を比較した所感。100%満足はしてないもののパフォーマンスの恩恵が大きく、なんとかAtomでできたことを損なうことなくVSCodeでも許容できるレベルにもっていけたのが乗り換えの決め手。

UI

ほとんどどちらも同じような感じで差異は大きくない。ただ、プロジェクト内から文字列検索したときの結果表示がAtomのほうがエディタ部に表示されるのでわかりやすい。VSCodeだとエクスプローラー部分に表示されるのが小さくてみづらい。

またキーバインドの設定はAtomイベントが発火したのか表示できるけど、VSCodeは表示する機構がないで、コンフリクトしてるキーバインドのデバッグが非常にしづらい。

見た目のカスタマイズ

見ためのカスタマイズは完全にAtomのほうが柔軟。これはDevToolsを開けるうえ、設定のLESSファイルを自由に編集できる。ということは変更したい箇所のセレクタにCSSを書いてあげることで如何様にもなる。

一方VSCodeは全てではないものの主要箇所はできて、まあ必要十分かな、という感じではある。個人的にはツリービュー(エクスプローラー)の文字サイズや行の高さなどはカスタムしたいけどできないのがもどかしい。

パフォーマンス

よくAtomは遅いと言われるけど、うん、まあ否定できない。それでも一応速くはなったんだけど。あとログファイルみたいに大きなファイルを開くとビーチボールがぐるぐるしてどうしようもなくなることがある。

VSCodeは最初の表示は速い。ウィンドウの起動はちょっとかかるけどAtomに比べたら軽い。またファイル表示はキビキビ開く。ただし、これはどうもLinterやシンタックスハイライトなんかは開いた後でやってるような感じ。まず表示を優先する、みたいな挙動っぽい。大きなファイルは大きすぎたときはまず警告出してくれるので助かる。


さて、以下に拡張機能を列挙していくんだけど、自分で探す場合の注意としてはVSCodeのパッケージは検索すると同名のものが出てきたりする。同名のものをフォークして上げただけ、みたいな感じっぽいけどインストールの際はちょっと注意したい。

また、見つからなかったものは[-]とかって書いてあるけど、単に検索力が足りなかったり別のパッケージの一部にその代替機能が含まれてたりする可能性はあるのでご注意されたし。

選択系、変換、入力補助(エディタ操作)

概要詳細Atom PackageVSCode Package
矩形選択SublimeText的な矩形選択。見たままの四角の範囲を選択可能。Sublime-Style-Column-Selection-
選択範囲を段階ごとに広げる選択範囲を文字、単語、クォートや括弧で囲んだ要素、と順々に大きくできる。expand-regionexpand-region
キャレット列のハイライト-highlight-column-
キャレット行のハイライト-highlight-lineビルトイン
選択した文字列のハイライト選択してるものと同じ文字列をハイライト。highlight-selected-
ブラケットハイライト対応するブラケットをハイライトビルトイン-
ブラケットカラーハイライト対応するブラケットごとに色をかえてわかりやすく表示bracket-colorizerBracket Pair Colorizer
文字ケースの相互変換キャメルケースとスネークケースだけでなく、ケバブケースもドット記法なども幅広く対応してるのでうれしい。change-casechange-case
クォーテーションマークを相互に変換シングルクォートとダブルクォートのトグルだけでなく、設定でバッククォートも対応できる。toggle-quotesToggle Quotes
二元的要素のトグル変換true/falseなどをトグルで変換。設定で対応文字列をカスタマイズ可能。togglertoggler
タブ-スペース変換インデントのタブorスペースをトグル変換。tabs-to-spacesビルトイン
セミコロンやカンマ付与今キャレットがどの列にあろうとも現在の行末にセミコロンとカンマをつける。キーバインドで設定すると捗る。trailing-semicolontoggle semicolon
行末スペース制御行末のスペースを目立たせたり自動で削除したり。Atomはスタイルをカスタムすると良い感じtrailing-spacesTrailing Spaces
全角スペース制御全角スペースを強調表示。Atomはスタイルをカスタムすると良い感じ。show-ideographic-spaceEvilInspector
制御文字の制御BackSpaceなど制御文字を削除するフォーマッタ。不意に紛れこむと思わぬバグを起こすのでありがたい。-Remove backspace control character
連番の数字を挿入複数行にわたって一括で連番生成。sequential-numbervscode-input-sequence
選択した複数行をソート選択した範囲に含まれる複数行をアルファベット順や逆順などでソートlinesSort lines
カラーコードの部分だけカラー表示カラーコードになってる文字列の背景色をその色で表示。CSSとか書くときに便利。StylusやSassの変数も対応してるので重宝する。pigmentsColor Highlight
正規表現補助正規表現をビジュアルで表示してくれる。regex-railroad-diagramRegex Railroad Diagrams
Path入力補完Path入力補完、でもたまに邪魔なときがある気がする。autocomplete-pathsPath Intellisense
列のフォーマッタオブジェクトの定義とか、連続して変数に値を入れるとき、=:をセパレータとして左右のインデントが揃うようにしてくれるフォーマッタ。言語別のものもある。alignerBetter Align
インデントフォーマットネストした要素のインデントをうまいこと整形してくれるフォーマッタ。JSONとかも良い感じにやってくれたり。けっこういろいろ対応してる。atom-beautifyBeautify
高機能マルチカーソルデフォルトより高機能なマルチカーソル。キーバインドがバッティングしやすいので要カスタム。multi-cursor-plus-
キャレットの行移動補助設定した行数文だけキャレットを一気に移動する。Emacsのページ送り的な送り用途として使える。line-jumperline-jumper

ファイル、タブ、ペイン操作系

概要詳細Atom PackageVSCode Package
ペイン自動最大化複数Paneで分割してる時にアクティブなペインを自動的にほぼ最大化する。フォーカスしたペインを自動的に最大化したりもできる。hey-pane-
ツリービューのフィルタツリービューで表示しているファイルをインクリメンタルに絞り込む。tree-view-filter-
タブの規制最大タブ数の設定制御。設定数を越えると古いタブから自動的に閉じて入れ変わる挙動になる。設定でピン止めしたファイルや、未コミットファイル除外したりもできる。たくさんファイル開きすぎてわかんなくなっちゃうので。zentabs-
メソッド定義などのツリー表示定義されたメソッド、変数などをサイドドロワーにツリー表示symbols-tree-viewビルトイン
TODOコメントの抽出プロジェクト内に存在するTODOやNOTEなどのコメントを抽出して表示。todo-showTodo Tree
GHQ連携CLIリポジトリ管理ツールghqの管理下にあるプロジェクトのショートカット。全てのプロジェクトがGit管理されていれば、プロジェクトマネージャーはこれだけで十分だと思う。douglasvscode-ghq
変更ファイルの強調ツリービュー(エクスプローラー)上でGitステータス▽による色分け表示する。追加ファイルや変更したファイルとかが視覚的にわかりやすいし、未コミットのファイルもみつけやすい。tree-view-git-statusビルトイン
ファイルエンコーディング判別エンコーディングの自動判別。auto-encodingビルトイン
ファイルエンコーディング変換マルチバイトのファイルをutf-8に変換。convert-to-utf8-
FuzzyGrepファイル検索プロジェクト内をag的なfuzzyGrepしてファイル表示。atom-fuzzy-grep-
ディレクトリごとのファイル操作ディレクトリごとに絞り込みでファイルを開ける、フルキーボードで階層ごとに掘っていく場合に便利。advanced-open-file-
Expose風タブ操作開いてるタブをmacのexpose的に表示、切り替えできるやつ。expose-

HyperClick系

概要詳細Atom PackageVSCode Package
HyperClickコード中のいろんな要素がクリッカブルになる。キーバインドにも対応していて対象の文字列にキャレットがあるときはキー操作でも動作する。**-hyperclick系のアドオンとかで拡張可能。言語特化のアドオンは後述の言語別のところで。hyperclick-
HyperClickのURL対応URLをクリッカブルにしてデフォルトブラウザで開けるようになる。hyperlink-hyperclickビルトイン

ミニマップ

概要詳細Atom PackageVSCode Package
Minimapサイドドロワーにコード全体をざっと単純化して見わたせるようなやつを表示。他のパッケージで拡張可能。minimapビルトイン
Minimap選択文字列ハイライトMinimap内で選択した文字を全てハイライト。minimap-highlight-selectedselect highlight in minimap
Minimapを自動で隠すミニマップをスクロールしてないとき以外は自動的に非表示minimap-autohider-
Mimimap内検索文字列ハイライトミニマップ内で検索文字列を全てハイライト。minimap-find-and-replaceビルトイン
Minimapカラーコード表示ミニマップ内でカラーコード部分をカラー表示。minimap-pigments-

その他、機能拡張

概要詳細Atom PackageVSCode Package
多人数同時編集他の人とつなげて同時にシェアしながらコーディングできる。モブプロ、ペアプロなどでものすごい活躍する。teletypeVS Live Share
AtomキーマップコンフィグAtomでデフォルトのキーマップに一括で変更するビルトインAtom Keymap
コーディングフォーマットの統一EditorConfigの対応。プロジェクトルートに.editorconfigという設定ファイルを置いて制御。editorconfigEditorConfig for VS Code
設定の共有、同期GitHubGist経由でエディタの設定、インストールしているアドオン情報を複数端末で同期する。sync-settingsSettings Sync
ノートテイキング検索しやすいノートシステムをエディタに組み込み、メモやスニペットなどの一元管理を自分のカスタマイズしたエディタで編集できるのは強み。Atom版はnotational-velocityライクでかなり使いやすい。atom-notesVSNotes
ブラウザ連携同名のGoogleChrome拡張をブラウザに入れることで、ブラウザで開いてるページのテキストエリアを同期的にエディタで編集できるようになる。例えばPull RequestなどMarkdown対応のテキストエリアをエディタで編集できるのはかなり便利。atomic-chromeGhostText
ターミナルエディタ内でターミナルを動作させるplatformio-ide-terminalビルトイン
CSVエディタエディタからCSVを表計算アプリケーションのように表示、編集できるtablrExcel Viewer
拡張パッケージ管理パッケージにアップデートがあったら自動でアップデートする。ちょいちょい自分で確認しなくていいので楽。auto-update-packagesビルトイン
ファイルアイコンツリービュー(エクスプローラー)やタブにファイルのアイコンを表示して視認性を上げる。VSCodeでは各種テーマでさらにカスタム可能。file-iconsビルトイン
ファイルタイプの判別補助自動で判別されるファイルタイプのルールをカスタマイズを楽にする。file-types-
差分表示、補助Paneで分割してDiff表示、見やすい。しかも保存してない状態でもDiffとれるので、長大な文字列とか大きめなオブジェクトを一時的に比較するときも重宝する。split-diffPartial Diff
コードプリプロセスプリプロセッサ言語から元言語へ変換。preview-
ステータスアイコンステータスバーに状況表示アイコンをプラス。確かAtom用のLinterと一緒に入ってくるはず。busy-signal-
ウィンドウタイトルのカスタマイズAtomのウィンドウに表示されるタイトルのルールを変更できるようになる。上手く好きなようにファイル名の表示とかにカスタマイズすると地味に便利。custom-title-
定義元にジャンプメソッドの定義元にジャンプできるようになる。goto-definition-
ステータスバーにファイル名表示現在開いているファイル名とファイルパスをステータスバーに表示ビルトインActive File In StatusBar

Linter系(Atomのみ)

概要詳細Atom PackageVSCode Package
LinterLinter機能。各言語用のPackageを別途追加が必要。各言語用のLintは後述。linter-
Linter表示Linter表示用UI。たぶんLinter入れると入ってくるはず。linter-ui-default-

各言語とか用途とか別

Git

概要詳細Atom PackageVSCode Package
Git総合サポートGit周りのこといろいろ-GitLens — Git supercharged
Git履歴表示Git logビューアgit-logGit History
Git変更内容アイコンAtomにビルトインのステータスバーにGitのファイル変更状況アイコンを表示する-Git Indicators
gitignoreサポートgitignore用のシンタックスハイライト-gitignore
GistGitHubのGistを編集したりアップロードしたり、挿入したり。Gist系はいくつかあったけどこれが一番使いやすかった。gist-
Git Blame表示行ごとにGitで変更した人を表示する。git-blameGitLens — Git supercharged
Git操作ショートカットよく使うGit操作をAtomから直でできる、Atomのコマンド補完が効くので便利、基本的なgit操作はこれだけでいける。ビルトインのものでも十分だがあると便利git-plus-
コンフリクトのサポートGitでmergeしようとしてコンフリクトしたときの編集サポート。merge-conflictsビルトイン
ホスティングサービス対応GitHubなどのホスティングサービスを開いたり、プルリクエストページを開いたりできる。GitHubだけでなくBitbucketなど他のサービスにも対応しててうれしい-Open in GitHub, Bitbucket, Gitlab, VisualStudio.com

Markdown

概要詳細Atom PackageVSCode Package
Markdown表示の拡張デフォルトのMarkdownプレビューより高機能なプレビュー、TOCやプレゼンモードもあったりする。目次機能もあったり、いろいろと便利。markdown-preview-enhancedMarkdown Preview Enhanced
入力補助Markdownの全般的な入力補助。とりあえず入れてる。markdown-writerMarkdown All in One
目次自動生成編集中のMarkdownの目次を自動生成Markdown TOCMarkdown All in One
テーブル記法補助Markdownのテーブル記法編集補助、うまいこと縦のカラム表示を整えてくれる。markdown-table-editorMarkdown All in One
テーブル記法補助2別のMarkdownのテーブル記法編集補助Markdown Table FormatterMarkdown All in One
Markdown目次機能ドロワーやエクスプローラーに編集中のMarkdownの目次をページ内リンク付きで表示。document-outlineビルトイン
タスク記法のトグルMarkdownのチェックボックス記法のチェック状態のトグル変換。そんなに使わないけどいちいちキャレットを移動するのが面倒なので。toggle-markdown-taskMarkdown Checkboxes
フォーマッタ番号付きリスト記法の番号振りなおしなど、フォーマッタ。tidy-markdown-
シンタックスハイライトAtomデフォルトのものより高機能なハイライタ。language-markdown-
TextLint特に日本語に強い自然言語用のLinter、textlintをAtomで使えるように。Markdown以外でも効く。linter-textlintvscode-textlint

JSON

概要詳細Atom PackageVSCode Package
シンタックスハイライト(階層)JSONファイルを階層によってカラーリングを変えて視認性を上げる。atom-json-color-
フォーマッタJSONファイルの整形フォーマッタ。pretty-jsonJSON Tools
LinterJSON用のLinterアドオン。linter-jsonlint-
ソートJSONオブジェクトをアルファベット順などでソートできる。-Sort JSON objects

Ruby

概要詳細Atom PackageVSCode Package
総合サポート-RubyRuby
Hamlサポートhaml用の言語ファイル。language-hamlRuby Haml
SlimサポートSlim用の言語ファイル。language-slimSlim
RspecサポートRspec(Rubyのテストフレームワーク)用の言語ファイル。language-rspecrspec-snippets
RablサポートRabl(RubyOnRails用のJSONやxmlに特化したテンプレートサポートGem)用の言語ファイル。language-rabl-
Linter(RuboCop)Rubocop用のLinterアドオン。linter-rubocopruby-rubocop
Linter(erb)erb用Linterlinter-erb-
Linter(Haml)Haml用Linterlinter-haml-
Linter(Slim)Slim用Linterlinter-slim-
入力補完Ruby用の入力補完。別途Solagraph Gemのインストールが必要。autocomplete-rubyRuby Solargraph
自動修正Rubocopルールに従って自動修正。rubocop-auto-correct-
フォーマッタRuby用フォーマッタのrufoをエディタから実行。JSのprettier用のプラグインのほうが主流になりそうな感じ。rufo-atomrufo (Ruby formatter)
Railsサポート--Ruby on Rails
RailsパーシャルビューサポートRailsのパーシャルビューの自動補完autocomplete-rails-partial-
Rspecファイルを開く現在開いてるファイルに対応したRspecのファイルを開く。rails-open-rspec-
Rspecの実行エディタからRspecをrun。rspecRails Run Specs
ブロック文法の補助do,if,begenendなどの対になるブロック要素をハイライト。ruby-block-
i18nサポートRailsのi18n用のAutocompleteとHyperClickアドオンのセットrails-i18n-plus-
Rails補助Rails用のスニペット集。rails-snippetsRuby on Rails
Rails補助(ファイル)Model,View,Controllerなど対応するファイル同士を素早く開けるようにする。rails-transporter-

JavaScript系(Node.jsやメタ言語、フレームワーク含む)

ちなみにPrettier系入れずにプロジェクトにESlintと統合するeslint-plugin-pretteirを使って統合している。

概要詳細Atom PackageVSCode Package
TypeScriptサポートTypeScriptの言語ファイルか補完や便利機能まで、IDE的サポート。atom-typescriptビルトイン
Vue.jsサポートVue.js用の言語ファイル。language-vueVetur
Vuc.js入力補完Vue.js用Autocompleteアドオン。vue2-autocompleteVetur
ESlintJavaScript用のLinterであるEslintサポート、prettierと連携も可。linter-eslintESLint
JS用HyperClickJavaScript用のHyperClickアドオン。js-hyperclick-
Vue.js用HyperClickアドオンVue.js用HyperClickアドオン。vue-hyperclick-
JestサポートJS用テストフレームワークJestのサポート-Jest

HTML系(メタ言語含む)

概要詳細Atom PackageVSCode Package
Pugサポート-language-pugPug (Jade) snippets
HTML用LinterHTML用Linterアドオン。linter-htmlhint-
Pug用LinterPug用Linterアドオン。linter-pug-
HTMLタグ補完HTMLの閉じタグのショートカットと補完。Pugで書けばいらないんだけどね。tagAuto Close Tag
Emmetサポートhtml,css(プリプロセッサ含む)の強力なスニペット集。emmetビルトイン
インデント記法サポートJade(pug)やStylus,Sassのインデントベース記法の環境で、現在のキャレットの位置がどの要素のネスト中なのかツールチップで表示。indent-tooltip-

CSS系(メタ言語含む)

概要詳細Atom PackageVSCode Package
StylusサポートStylus用の言語ファイルとスニペット集。Styluslanguage-stylus
Stylus自動補完Stylus用のAutocompleteアドオン。autocomplete-css-with-stylus-support-
StylusフォーマッタStylus用フォーマッタSupremacyサポート、かなり柔軟な設定が可能。-Manta’s Stylus Supremacy
Stylus用LinterStylus用のLinterアドオン。linter-stylintStylint
CSS用LinterCSS用のLinterアドオン。linter-stylelintstylelint
Sass用LinterSCSS(SASS含む)のLinterアドオン。linter-scss-lintSass Lint

PUML

UMLをテキストから表現したもの。
細かいレイアウトは難しいもののテキストならGit管理もできるし素早くかけるので覚えてよかった。

概要詳細Atom PackageVSCode Package
PlantUMLサポートPlantUMLの言語ファイルlanguage-plantumlPlantUML
PlantUMLビューアPlantUML用のUMLを表示plantuml-viewerPlantUML

その他の言語系

概要詳細Atom PackageVSCode Package
ApacheApacheのコンフィグ用language-apacheApache Conf
nginxnginxのコンフィグ用language-nginxnginx.conf
LispLispサポートlanguage-lispLisp
envファイル環境変数を設定するenvファイルのシンタックスハイライトDotENV-

おしまいに

VSCodeに乗り換えたものの、今もAtomは好きだし、なんとなくVSCodeは好きになれない。もしかしたらあるイベントで好きでAtom使ってるところにかなり無理にVSCodeを勧められた経験からかもしれない(やれ補完がどうとか。それはVSCodeの機能ではなくLanguage Serverだ)

Web上でもVSCode推しみたいのを良く見る。しかもAtomを貶めてまで。エディタは宗派で戦争になるためそういう推し方は好きじゃないんだよなぁ。あ、あれだインド行ったとき、自分の旅の一部としてとても楽しかったけど、インド推ししてる日本人の方々をどうも好きになれなかった感じと似ている。

なんにせよどんなエディタを使おうにもこういう拡張が充実してきてみんなが平和に好きなエディタを心地良く使う世の中がいいよね。

そろそろ本気でちゃんとブログを書こうと思ったちゃんとしたGitコミットメッセージをCommitzenを日本語で使って楽に書く