EmacsとVisual Studio Codeの使い分け

SREチームの長田です。

KAYAC Advent Calendar 2021の16日目です。 今回はSREとはあんまり関係ないエディタのおはなしです。

TL;DR

  • プロジェクトとしてまとまっているものはVisual Studio Code
  • 単体のテキストファイルはEmacs

登場人物

Emacs

www.gnu.org

  • ほぼEmacs一本で生活していた
  • Spacemacsを導入してからはカスタマイズコストも下がって快適に

Visual Studio Code

code.visualstudio.com

(以下VSCodeと表記)

  • 今年の9月頃からメインの開発用エディタとして使用中
  • 前から軽く触ってはいたけど、やりたいことやるために設定ちょっといじっては放置を繰り返していた

なぜVSCode使うようになったのか

開発環境をリモート化したい*1、というのが一番の理由です。 GitHubのCodespacesを使いたいんですよね。

エディタの共存

これまでは全てのテキストを同じインターフェイスで編集したいと思っていたので、 どんなテキストファイルでもEmacsで開いていました*2

最近は適材適所でエディタなりIDEなりを使い分ければいいかなーという気持ちになっています。 自分の中ではEclipseの印象が強かったので、 「IDE=重い」というイメージだったのがようやく払拭できたのではないかと。

要約にも書きましたが、いまはこのように使い分けています

  • プロジェクトとしてまとまっているものはVSCode
  • 単体のテキストファイルはEmacs

プロジェクトディレクトリ外のファイルをVSCodeで開くこともできますが、 扱いづらさを感じたのでこのような使い分けをしています。

例外として、凝ったテキスト編集を行いたい場合はプロジェクト内のファイルでもEmacsで開くことがあります。 正規表現による置換結果が見やすいとか、検索結果を直接編集できるとか、キーボードマクロが使えるとか。 ただ、このあたりは慣れ・成長しきった設定・長年鍛えられたEmacs筋によるものが大きく、 VSCodeの使い方開拓や拡張を見つけるなり作るなりすることで、テキスト編集に関する両者の差は少なくなっていきそうです。

引き継がれるEmacsの面影

とはいえ長年のEmacs生活の影響は大きく、見た目や使い勝手はEmacsを使っていたころものに寄せています。

f:id:handlename:20211218164939p:plain
VSCode - エディタ部分以外は非表示にしている

f:id:handlename:20211218165028p:plain
Emacs - MarkdownのプレビューはMarkedで(Emacsに何でもやらせすぎない)

同時に起動するので、見分けが付きやすいようにカラーテーマをそれぞれライトなものとダークなものに設定しています。

ちなみにどちらもキーバインドはVimです。

おまけ: VSCodeで開いているファイルをEmacsで開く

VSCodeで開いているファイルをEmacsで開く場合は、Open in Editorという拡張を以下のように設定するとスムーズです。 VSCodeで開いているファイルの同じ行・同じ列位置にカーソルがある状態でEmacsを開くことができます。

"alt-editor.binary": "emacsclient",
"alt-editor.args": "-n +{line}:{column} {filename}",

※Emacsで server-start している必要があります

おまけ:エディタ乗り換えの歴史

ついでいつ頃どんなエディタを使っていたのかを振り返ってみたら案の定フラフラしていました。 半年くらい別のエディタに乗り換えてはEmacsに戻ってくるというのを繰り返していたようです。

期間 エディタ 当時の記憶
〜2010年 xyzzy Windowsユーザーだった
2010年 Emacs 就職したら強いEmacsの人がいた/Macユーザーになった
2012年 Vim 触ってみたくなった
2012年 Emacs やっぱり違ったらしい
2013年 Sublime Text 2 気分転換
2014年 Emacs 結局戻ってきた
2014年 Atom .emacs.d を無くしたので
2014年 Emacs 物足りなかったらしい
2016年 Emacs (Spacemacs) Vimキーバインドに移行
2020年 Emacs (Spacemacs) + VSCode VSCodeはデバッガのUIとして使っていた程度
2021年 Emacs (Spacemacs) + VSCode VSCodeを本格的に使い始めた

おわり

また気が変わるかもしれないですが、しばらくは Emacs + VSCode で行くはずです。

カヤックでは開発環境改善が好きなエンジニアも募集しています

*1:iPadからでも開発できるようにして、最近はたまにしかしない出勤時の荷物を少なくしたいという目論見があります

*2:むかしiOSアプリを書いていた頃は、Xcodeの外部エディタにEmacsを設定して、ObjectiveCもEmacsで書いていました。なつかしい