この記事は Emacs 精進 Advent Calendar 2025 22 日目の投稿です。
背景
指導教官が Emacsen の場合、学生は Emacs の使用を強いられることがあります。僕の周りでは、例外無く Emacs を嫌いになって、二度と使わなくなってしまいました。人と趣味や志を共有しようなんて、はかない幻想なのですね 🥺
Emacsen 同士はお互いに理解不能な進化をしていますし、例え VSCode であっても中で Neovim が動いていたりしますから、お互い理解は困難です。結局、エディタの見た目ぐらいしか共有できないのかもしれません。
バッファグループの活用
さて、 Emacs の表層を最も他のエディタに近づけてくれるパッケージは centaur-tabs だと思います。このように表示します:
nerd-icons.elを入れるとターミナルでもアイコンを表示してくれて最高です。
プロジェクトごとのバッファグループを持つ
これが通常のバッファバーと何が違うかと言えば、 *scratch* を始めとしたバッファが氾濫していない点です。あくまで現在開いているプロジェクトのバッファのみが表示しています。
centaur-tabs-switch-group を開くと、以下の 4 つのグループに分かれていました:
*scratch* は Misc グループの中にいます。編集中の qiita グループとは別に、 dotfiles の記事も開いていますが、別グループのため上の通り非表示になっています。
『サイドバー』や『ボトムバー』を作る
これを活かして『サイドバー』や『ボトムバー』を作ると、 VSCode の pane に少しだけ近づけます:
設定
強引ですが、以下のように centaur-tabs-projectile-buffer-groups を拡張する形で関数を定義し、 centaur-tabs-buffer-groups-function に登録すれば良いです:
(defun toy/centaur-tabs-group ()
"Add `Sidebar' and `Bottom bar' groups / use `projectile' buffer gruups"
(cond
((string-equal "@"
(substring
(buffer-name)
0 1))
'("Sidebar"))
((string-equal "⊥"
(substring
(buffer-name)
0 1))
'("Bottom bar"))
((or (string-equal "COMMIT-EDITMSG" (buffer-name))
(and (> (length (buffer-name)) 5)
(string-equal "magit"
(substring
(buffer-name)
0 5))))
'("magit"))
((string-equal " *" (substring (buffer-name) 0 2)) '("mini"))
(t
(centaur-tabs-projectile-buffer-groups))))
まとめ
カジュアルさの面から centaur-tabs をご紹介しました。バッファグループごとにバッファバーが多重化されるという意味でも非常に助かっています。
記載の設定はボロボロですみません……。
それでは次の記事でお会いしましょう!


