🐋

Emacsに浮気してしまったVimmerが2026年に思うこと

に公開

はじめに

この記事では学生から現在の社会人一年目までの間、Vimを使ってきた自分が、2026年になってEmacsを再燃した理由を気楽に述べていく記事になっております。
これは宗教改宗の話とかの話ではなく、どちらがいいと断定するものではありません!
Vimについてももちろんこれからも愛し設定し続けていこうと思っています!!
VimmerとしてもEmacserとしてもまだまだ未熟者ですので、間違い等あるかもしれませんが指摘していただければ修正します!!
記事に関しても書き慣れておらず読みづらい文章かもしれませんが、ほんの少しでも楽しんで下さったらとても嬉しいです🙌

過去のEmacs体験と挫折

まず初めに、自分はEmacsを今回初めて触ったわけではないです。元々Emacs自体は軽く触っていました(Emacs Lispは書いてない)。
ではなぜ使用しなくなったかというと、業務の環境と相性が悪いと思ったためでした。
自分は仕事で開発サーバーにtramp [1] を使って仕事をしていました。ただ、trampでファイルを開いている時にeglot [2] を起動したりすると大変遅く、自分の中では実用的に開発できるスピードではありませんでした。
設定を工夫したりssh configをいじったりと試行錯誤したのですが満足のいくスピードまでは改善されず、使用頻度は減っていき気がつけばVimに戻っていました。
ただ、ずっとEmacsを使いたいモチベーション自体は残り続けていました。
そんなことを考えていた昨年末、別の選択肢としてこれまで避けていた rsync での開発をしてみたところ、先ほど言っていたスピードの問題は回避でき熱が高まってきました。
(現在は dir-locals.el [3] と合わせて使うような運用をしています。こうしたら良さそうなど、アドバイス等もらえたら嬉しい限りです。)

そんな感じで浮気してしまったVimmerの目線からどんな魅力に惑わされてしてしまったのか、語る記事にできたらいいなと思っています。

VimmerがEmacsを気になっていた理由と気に入っているポイント

Lisp(Emacs Lisp)が書ける ← 楽しい

自分自体、まだまだ初学者なのですが

  • データでコードを記述する
  • コードをコードで操作できる
  • 書いていて思考がそのまま形になる感覚がある(うまく言語化できない...)
  • etc...

など新鮮で、学びも多く、初心者ながらに書いていて楽しいなと思いました。

画像が表示が容易にできる

これは自分にとってはデカかったです。
自分はできるだけ好きなものにできるだけ囲まれて生きていきたいと思っています。「学園アイドルマスター」や「のあ先輩はともだち。」などなど自分には好きなコンテンツがたくさんあります!!
可愛いイラストみたりするとお仕事頑張るかなーという気分にさせてくれます。
そうなれば目にする回数が多いエディタの中でもそういった可愛いものに囲まれたいと思うのが必然だと思います。
可愛いをエディタから接種したいという気持ちが強かったのは一つの大きな理由でした。

まだまだ理想の環境を整備できていないんですがとりあえずお試しで表示してみた時の画像 [4]

org-modeがどうしても使いたかった

org-mode [5]を知っていますか?知っている方も多いと思うのですがorg-modeはEmacsのメジャーモード(1バッファにつき1つ設定される、そのバッファがどういうものでどういう振る舞いをするかを決めるもの)の一つです。アウトライナーとしての機能以外にも本当にたくさんの機能があり代表的なものだと

  • タスク管理
  • メモ管理
  • 習慣管理
  • 表計算
  • etc...

などいろいろな機能を持っています。org-modeを使っていろいろなものを一元管理している人の記事や動画もあるので気になる方はぜひ調べてみると幸せになれるかもしれません!

ノート術であるzettelkastenなどをorg-modeで運用している方もいて、そういう運用もorg-mode(Emacs)のパワーを使ってできるんだ。自分もorg-modeのパワーを手に入れたい!と思いました。

社内にEmacsのプロフェッショナルがいる

実は社内にEmacsのプロフェッショナルがいてEmacsについての話を目にする機会が多かったというのも一つの理由でした。
Emacsでかっこよく編集しているところを拝見して素晴らしいと思いました。

思ったより全然もっさりしていない

2021年ごろからコードを書き始めた新人の勝手な偏見として

  • Emacsは古い
  • Emacsは全部同期的に動いてそうだな
  • Emacsはシングルスレッドで、重い処理が走るとUIごと固まりそうだな
  • EmacsはLispで書かれていて、実行速度が遅そうだな

なのでもっさりしてるのかなというなんとなくネガティブなイメージが正直Emacsを触るまではあったんですが、

  • 時間のかかる処理は外部プロセスとして実行する
  • UIの応答を優先させて操作が止まっているように感じないような努力をする
  • etc...

とうの工夫によって改善されていて、必ずしも遅いわけではないことを知りました。
悪いイメージを払拭することができたのも理由の一つです。

かっこいい

まだまだしっかりとカスタマイズできていないのですが、すでに独特のかっこよさがありますよね。

VimmerがEmacsを使っていて辛いところ

major-modeやminor-modeの概念になかなか慣れない

特にキーマッピングに関しては

  • Vim
    • Normal / Insertなどのmodeごとにキーを文法として使い切る設計
  • Emacs
    • 機能(major-modeやminor-mode)ごとに mode のキーマップを持ち、文脈の中にキーを閉じ込める設計

という違いがあり、Emacsはエディタではなく環境だからこその設計なのかなと思うのですが最初は理解していなかったこともあり、違和感がありました。

Vimの資産が使えない

evil-mode [6] というVimのエミュレーターがありVimのような思考の速度で編集することができたりするんですが

  • 今までVimで使っていた便利なプラグインが使えない
  • Emacsの上にVimを持ってくるので一つ一つVimの環境に似た挙動をもう一度Emacs上で自分で設定する必要があるため大変

↓evil-modeの設定例 - Evilで、スペースキーを起点としたキーバインドがかなり快適より引用

(if (evil-mode)
    (progn
      (bind-keys :map evil-visual-state-map
                 ("TAB" . indent-for-tab-command))
      (bind-keys :map evil-normal-state-map
                 ("SPC b" . ido-switch-buffer)
                 ("SPC f" . projectile-find-file)
                 ("SPC a" . helm-do-ag-project-root)
                 ("SPC x" . smex)
                 ("SPC s" . save-buffer)
                 ("SPC d" . dired-jump)
                 ("SPC k" . kill-this-buffer)
                 ("SPC r" . ido-recentf-open)
                 ("SPC 1" . delete-other-windows)
                 ("SPC 0" . delete-window)
                 ("SPC q" . delete-frame)
                 ("SPC t" . xref-find-definitions-other-window)
                 ("SPC y" . browse-kill-ring)
                 ("SPC u" . undo-tree)
                 ("TAB" . indent-for-tab-command))
      (bind-keys :map evil-insert-state-map
                 ("C-g" . evil-normal-state)))

みたいな問題はあるので資産をそのまま活かせず、すぐに移行できないのは人によっては辛いところかもしれないです。

Vimに比べると情報が少ない(かも)

詳しい検証をしていないのでわからないんですが少なくとも日本語の情報に関しては新しいものを探すのが難しいと思いました。

強靭な小指が必要

Emacsではmemeになるほど小指を酷使します。実際自分も小指に負担きてるなと思う瞬間はあります。もし耐えられなくなった場合は、さっき言ったevil-mode使うなどの対策するかも。

余談

自分の中で、エディタという存在はともに成長を続けてきた相棒のようなものだと思っています。
エディタの設定はエンジニアリングの基本でであるPDCAを回す習慣を自分に教えてくれました。
もしエディタ(Vim)を好きになれていなければ、おそらくエンジニアになることもなかったと思います。
そういった経緯もあり、情報発信してくださっている方や、コミュニティを支えて下さっている方に感謝だなと思います。
また、自分も今度は支える側として少しでもなんらかの形で貢献できたらと記事を書いていて思いました。

最後に

Vim駅伝でEmacsの話をしてしまい申し訳ありませんでした!!
あまり文章を書く機会がないため、読みづらい文章だったかと思いますが
最後まで読んでくださりありがとうございました🙌

脚注
  1. SSHなど越しのリモートファイルを ローカルと同じ操作感で Emacsから直接編集できる仕組み ↩︎

  2. Language Serverと接続して補完・定義ジャンプ・診断などを最小構成で提供するEmacs標準寄りのLSPクライアント ↩︎

  3. そのディレクトリ以下のファイルを開いたときだけ有効になるプロジェクト単位でEmacsの挙動を変えるための設定ファイル ↩︎

  4. emacs-dashboard/emacs-dashboard: An extensible emacs dashboard ↩︎

  5. Org mode for Emacs ↩︎

  6. emacs-evil/evil: The extensible vi layer for Emacs. ↩︎

GitHubで編集を提案

Discussion