type t (* void *)

無な日常の記録

EmacsユーザがVSCode だけで開発するようになって1ヶ月が経った

必要にかられてVSCode縛り開発を一ヶ月やっていたのですが、普通に便利に開発できるようになったのでメモ。

VSCodeでしかできないことがある

VSCode を使うことになった主な原因は2つある。

Live Share

ひとつはリモート下で密接にペアプロする必要があったため。
その上で Live Share が便利すぎて手放せなくなった。

docs.microsoft.com

多分対面でやっていても、お互い別のマシンでLive Shareでつないでいる方が都合が良いくらい便利。
最近Pythonばかり書いておりますが、Pythonだと値の型とかわからなくなったときに debugger を使うことがおおく、 その際にお互いデバッガーの状態を共有したまま調査ペアプロとか出来るので非常に便利。

Remote SSH

もう一つはリモートマシンにログインしてストレス無く開発するのにRemote SSHなどの拡張が あまりにも便利だったため。

これはみなさんもWSLにAttachするのにRemote WSLとかを使っているかと思いますがSSH用にもあまりにも便利です。

私は主に会社のマシンにsshしてすべての作業を行っていますが、共有マシンに他にもログインするのにEmacsのTrampを使っていました。 Trampを使っていると、すごくEmacsのメモリを消費していき、すごくGCの頻度が高くなる感じがありエディタが操作できない時間が段々と長くなっていきました。

VSCode はリモートマシンにデーモンを送り、それとVSCode がやり取りすることでリモート先とは思えない操作感を実現してます。
すごい、Emacsでもこういうことしたかった。

VSCodeを触っていると、エディタ自体が全然Stop the worldしないのですよね。
Emacs は基本あらゆる操作を逐次実行するので、何かの操作が重いと操作できない時間が発生していました(DiredでCopyするとか)。

最近コレに我慢できなくなってしまい、更にはWindows に標準でsshと.ssh/config の仕組みが入りクライアントとして普通に便利になってしまったこと・dockerが普通にWindowsから使えて docker context use REMOTE_MACHINE にすればリモートのDocker コンテナに直接アタッチできるのが便利すぎることなどから VSCode が便利に感じてきてしまいました。

Emacsでやっていた複数のshellを操作するのはtmuxでやるようにしました。まぁtmuxの中で相変わらずEmacsを操作していますが。

Emacs キーバインドほしい

たーぶんEmacs Keymapを提供する拡張の中ではダウンロード数が多い、という理由だけで以下のものを利用しています。

marketplace.visualstudio.com

結構問題はおきていて、

  • Terminal Focusみたいなものがデフォルトで出来ない
    • たぶんデフォルトだと Ctrl+j なのだけど、これはEmacsキーバインドを割り当てているので自分で設定しないといけない

これは標準じゃないキーバインドを使うもの運命なのでしょうがないです。
あとたまにアップデートごとにEmacsキーバインドの拡張のキーが使えなくなる現象が発生して、この拡張をuninstallしてinstallし直すと治ります。

困っていること

  • Emacsのmagitがほしい
    • magitがあまりにも便利で、それ以外でgit捜査するのがめんどくさくなってきた
    • VSCodeのgit連携機能は貧弱で、あまり使いたい気持ちにならない
      • 結局terminal で CLI gitを操作することが多い
  • キーバインドの体型がまだ理解できておらず、マウス操作なしにすべての操作をすることが出来ていない
    • バッファ切り替えをユーザだったのだけど、VSCodeで画面分割すると左側のサイドバーがでかくて分割しにくい
    • バッファの切り替えもあんま便利な感じしない