背景

Vim バインドはキーボード操作のメインストリームです。ブラウザ、 CLI アプリ、もちろんテキストエディタも Vim バインドで操作できます。

Sublime, VSCode, NeoVim, Emacs など様々なエディタが Vim バインドで操作可能ですが、 Emacs のワークフローは一皮剥けている気がします。ここでは『多重化』の観点から (僕の) Evil Emacs を紹介します。

多重化

多重化には 3 段階あります。

  1. 画面分割
  2. マルチタブ
  3. マルチ・マルチタブ

3 段階の多重化は Emacs の中とターミナルの両方で行われます。

ターミナルの多重化

tmux を使うとターミナルの画面分割ができます。マルチタブ機能もあります。

2023-03-terminal.png
Figure 1: tmux で画面分割

画面下部の ABC, dotfiles, ranger というのがタブです。マルチタブを持つ session も多重化できます。マルチ・マルチタブです。

2023-03-tmux.png
Figure 2: demo session の下に ABC, dotfiles, ranger タブがぶら下がっている

Emacs の多重化

Emacs の中でも 3 段階の画面分割が可能です。

2023-03-windows.png
Figure 3: Emacs の画面分割

最上部の config, ABC, Server がマルチ・マルチタブであり、プロジェクトの切り替えに相当します。

Server タブに切り替えてみました:

2023-03-tabs.png
Figure 4: Emacs のマルチ・マルチタブ

Emacs の UI

Emacs のウィジェット

Emacs でもサイドバーが作れます。サイドバーにはプログラムのアウトラインを表示することもできます。

2023-03-imenu.gif
Figure 5: imenu (アウトライン表示)

magit も紹介します。 Git の複雑な操作も丁寧にガイドしてくれる相棒です。

2023-03-magit.png
Figure 6: magit (Git クライアント)

Emacs における検索

ファジー検索は開発に書かせません。これも Emacs の得意技です。

2023-03-find-file.png
Figure 7: ファイル検索 (find-file)
2023-03-grep.png
Figure 8: grep

まとめ

Emacs は UI のリッチなエディタです。他のエディタで Emacs に匹敵する多重化機能を持つもの無いと思います。 Magit を始めとした豊富な画面も魅力で、 Emacs が実際に強力なため使用している点が伝われば幸いです。