🚀

今年最も大きなチャレンジ。emacsからvscodeに乗り換える

2024/12/14に公開

前書き

私は10年ほどEmacsを利用してプログラムを書いています。
実際のところプログラム以外の文書作成などもEmacsを利用しているので、Emacsは生活に欠かせないツールになっています。
Macを買ったらHomebrewの次にインストールするし、viと入力したらEmacsを起動するように設定したりします。

私はEmacsと共に成長してきたし人生の1/3くらい共に過ごしてきたかけがえのない相棒であることは疑いようもないことなのですが、とはいえこの世はいつの間にかvscodeを中心に回っている(そう感じる時が増えた。)
型情報をエディタに手厚く出してくれるようになってきているが、その恩恵を手厚く受けられるのもvscodeを筆頭としたエディタだ。Emacsやvimではない(残念ながら)

また数年前からCopilotを筆頭に開発にもAIの波が押し寄せてきている。
今の段階ではCopilotのサジェストよりも自分で手を動かす方が早く期待するコードを生産できているが、10年後も同じということはないだろう...。
EmacsからCopilotを利用することはできる、vscodeで動くCopilotと比べるとやはり完全に同等とは行かないように見える。
そうは言ってもEmacsは相棒で、Emacs以外でプログラムを書きたくなかった。たとえvscodeの方がCopilotをリッチに使えるとしても、僕自身がCopilotを上回っていれば済むだけの話。そう思ってやっていたのだが。。。

でも10年後のプログラミング言語がAIとvscode前提で開発を進めるようになるとしたら、自分自身もそれに備えておくことは必定なのかもしれない。

僕のEmacs

僕はプログラムを書くときにとにかくマウスやトラックパッドを触りたくない。
キーボードから手を離すということはそれだけ時間帯あたりのアウトプットが減るということなので。iTerm2から利用できるEmacsは自分の理想のど真ん中の存在なのだ。
僕の .emacs.d/init.elには小指に気を使いつつ、ほぼ全ての操作をキーボードだけで完結させられる設定が書かれている。
さらに開発を効率化する神プラグイン達を厳選して入れている。
同じでなくても良いのだが、vscodeでもそれに近いことをキーボードだけで実現できること。これは譲れないのでとにかく探すことにした。

なぜかmagitがある

Emacsがないと困る理由の一つがmagit。
これがあるおかげでGit操作が捗る捗る。magitにforgeも入れているのでEmacsからPullRequestを作成していたりする。流石にvscodeからPRを出すことはないにしてもmagitは欲しい。絶対にvscode備え付けの機能でGit操作はしたくない。
そう思ってプラグインを探したら同郷の開発者さんがいたみたいでedamagitという神プラグインを提供してくれていた。
神だ。これはほぼmagit。感動した。

Emacsのキーバインド

Emacsのキーバインドは最高だ。
いや、単純にファイルを編集するだけならvimの方が良い部分も多いし使いたくなることもあるのだが、そうは言ってもEmacs。とにかくキーバインドを再現するプラグインを探す。
サジェストされているEmacsのプラグインを上から試すもどれもこれじゃねぇ感がある。
最終的に Awesome Emacs Keymapが実家のようなEmacsだったのでこれを導入することにした。
このプラグインからはちょっと畳の匂いがする。

Copilot

Copilotを入れないならvscodeはいらない。
ほぼこれのために入れてるのでCopilotは入れる。
入れた状態でプログラムを書くけど、やはり今の時点ではこれが良いとは思わない。
利用者の多い言語なら良いのかもしれないがElixirを触っているとちょくちょく嘘サジェストもしてくれる。まだ信用ならない。
とはいえElixirや、もしかしたらRubyなんかもそうかもしれないが、将来的に動的型付けの言語で定義された変数や関数が何の型になっているのか?何の型を期待しているのか?をAIが柔軟に補完してくれるのだとしたら非常に魅力的だ。
動的型付け言語の魅力でもあり、開発規模が大きくなった時の不便さをエディタで埋めようというアイデアの延長にはAIがいる気がする。
私の愛するRubyやElixirがAIで最強になる未来があるのなら、ここに期待しvscodeに投資する価値はあると思う。

ファイル移動

サイドバーがあるのが許せなかった。
こいつがいるせいでマウスやトラックパッドの操作を強要される。
私にキーボード以外の操作を要求してくれるなと思っている。なのでまず opt + dでhelm的にファイルを串刺し検索できるようにした。
次に vscode-diredを入れてEmacsのdiredを再現できるようにした。
そのほかファイルの作成などもEmacsで利用しているキーバインドを割り当てることで、ファイルやディレクトリの展開や作成がキーボードだけで完結できるようになった。

キーバインド

そのほか入れてるキーバインド。
極力キーボードだけで操作を完結できるようにということで、たとえばタブの切り替えは ctrl+} ctrl-Pでできるようにしたりしている。

ターミナル

iterm2ではtmuxを利用している。
左のタブでEmacsを開き、右のタブでtmuxを開くことで2つのタブだけを利用して全ての操作を行うことができる。
僕はEmacsからターミナルを利用するのはどうしても馴染めなかったのでこれで良い。
この操作感に近いことをvscodeで再現するために色々考えた結果とりあえず Cmd + jでターミナルを開けるようにした。開いたターミナルでtmuxを立ち上げて基本的な操作は全部そこで完結するようにした。
まだエディタとターミナルを行き来するコマンドになれないがそのうち慣れるだろう。

未だ足りぬが

今もまだ全てがvscodeでできるようになったわけではない
Copilotがキラープラグインになるまでは未だEmacs60%という感じなのだが。
それでも僕が適応していくかAIが全てをひっくり返す未来が来た時に役に立つと思うのだ。
目前に迫った2025年、新しい時代に乗り遅れないように戦っていきたい思う。
とはいえ当面メインウエポンはEmacsなのだが。

Discussion