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

  1. 1. 使用感比較
    1. 1.1. UI
    2. 1.2. 見た目のカスタマイズ
    3. 1.3. パフォーマンス
  2. 2. 選択系、変換、入力補助(エディタ操作)
  3. 3. ファイル、タブ、ペイン操作系
  4. 4. HyperClick系
  5. 5. ミニマップ
  6. 6. その他、機能拡張
  7. 7. Linter系(Atomのみ)
  8. 8. 各言語とか用途とか別
    1. 8.1. Git
    2. 8.2. Markdown
    3. 8.3. JSON
    4. 8.4. Ruby
    5. 8.5. JavaScript系(Node.jsやメタ言語、フレームワーク含む)
    6. 8.6. HTML系(メタ言語含む)
    7. 8.7. CSS系(メタ言語含む)
    8. 8.8. PUML
    9. 8.9. その他の言語系
  9. 9. おしまいに

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

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

概要 詳細 Atom Package VSCode Package
ペイン自動最大化 複数Paneで分割してる時にアクティブなペインを自動的にほぼ最大化する。フォーカスしたペインを自動的に最大化したりもできる。 hey-pane -
ツリービューのフィルタ ツリービューで表示しているファイルをインクリメンタルに絞り込む。 tree-view-filter -
タブの規制 最大タブ数の設定制御。設定数を越えると古いタブから自動的に閉じて入れ変わる挙動になる。設定でピン止めしたファイルや、未コミットファイル除外したりもできる。たくさんファイル開きすぎてわかんなくなっちゃうので。 zentabs -
メソッド定義などのツリー表示 定義されたメソッド、変数などをサイドドロワーにツリー表示 symbols-tree-view ビルトイン
TODOコメントの抽出 プロジェクト内に存在するTODOやNOTEなどのコメントを抽出して表示。 todo-show Todo Tree
GHQ連携 CLIリポジトリ管理ツールghqの管理下にあるプロジェクトのショートカット。全てのプロジェクトがGit管理されていれば、プロジェクトマネージャーはこれだけで十分だと思う。 douglas vscode-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 Package VSCode Package
HyperClick コード中のいろんな要素がクリッカブルになる。キーバインドにも対応していて対象の文字列にキャレットがあるときはキー操作でも動作する。**-hyperclick系のアドオンとかで拡張可能。言語特化のアドオンは後述の言語別のところで。 hyperclick -
HyperClickのURL対応 URLをクリッカブルにしてデフォルトブラウザで開けるようになる。 hyperlink-hyperclick ビルトイン

ミニマップ

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

その他、機能拡張

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

Linter系(Atomのみ)

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

各言語とか用途とか別

Git

概要 詳細 Atom Package VSCode Package
Git総合サポート Git周りのこといろいろ - GitLens — Git supercharged
Git履歴表示 Git logビューア git-log Git History
Git変更内容アイコン AtomにビルトインのステータスバーにGitのファイル変更状況アイコンを表示する - Git Indicators
gitignoreサポート gitignore用のシンタックスハイライト - gitignore
Gist GitHubのGistを編集したりアップロードしたり、挿入したり。Gist系はいくつかあったけどこれが一番使いやすかった。 gist -
Git Blame表示 行ごとにGitで変更した人を表示する。 git-blame GitLens — 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 Package VSCode Package
Markdown表示の拡張 デフォルトのMarkdownプレビューより高機能なプレビュー、TOCやプレゼンモードもあったりする。目次機能もあったり、いろいろと便利。 markdown-preview-enhanced Markdown Preview Enhanced
入力補助 Markdownの全般的な入力補助。とりあえず入れてる。 markdown-writer Markdown All in One
目次自動生成 編集中のMarkdownの目次を自動生成 Markdown TOC Markdown All in One
テーブル記法補助 Markdownのテーブル記法編集補助、うまいこと縦のカラム表示を整えてくれる。 markdown-table-editor Markdown All in One
テーブル記法補助2 別のMarkdownのテーブル記法編集補助 Markdown Table Formatter Markdown All in One
Markdown目次機能 ドロワーやエクスプローラーに編集中のMarkdownの目次をページ内リンク付きで表示。 document-outline ビルトイン
タスク記法のトグル Markdownのチェックボックス記法のチェック状態のトグル変換。そんなに使わないけどいちいちキャレットを移動するのが面倒なので。 toggle-markdown-task Markdown Checkboxes
フォーマッタ 番号付きリスト記法の番号振りなおしなど、フォーマッタ。 tidy-markdown -
シンタックスハイライト Atomデフォルトのものより高機能なハイライタ。 language-markdown -
TextLint 特に日本語に強い自然言語用のLinter、textlintをAtomで使えるように。Markdown以外でも効く。 linter-textlint vscode-textlint

JSON

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

Ruby

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

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

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

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

HTML系(メタ言語含む)

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

CSS系(メタ言語含む)

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

PUML

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

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

その他の言語系

概要 詳細 Atom Package VSCode Package
Apache Apacheのコンフィグ用 language-apache Apache Conf
nginx nginxのコンフィグ用 language-nginx nginx.conf
Lisp Lispサポート language-lisp Lisp
envファイル 環境変数を設定するenvファイルのシンタックスハイライト DotENV -

おしまいに

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

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

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