Emacs: 不要なバッファーを自動的にkillする


Emacsのbufferをtabで切り替えるのはあまり好きでないのでswitch-bufferの機能を使っているが、magitやdired関係の不要なバッファーが沢山増えていくと煩わしくなる。

手動で削除すれば済む話ではあるが、やっぱり自動化したい。MELPAでいろいろpackageを探したが適当なものがなく、ググっていたら下記の記事を見つけました。

早速設定して使ってみたところ実に快適!

;; automatically kill unnecessary buffers
(use-package tempbuf)
(add-hook 'dired-mode-hook 'turn-on-tempbuf-mode)
(add-hook 'magit-mode-hook 'turn-on-tempbuf-mode)

参考

switch-buffer機能は、ivy-switch-bufferiflipb とを併用しています。

前者は、Helm-mini の代わりに使います。後者はキー操作によって開いているバッファーを切り替えたいときに使います。

(ivy-mode 1)
(setq ivy-use-virtual-buffers t)
(setq enable-recursive-minibuffers t)
(bind-key "M-:" 'ivy-switch-buffer)

iflipb.el の機能は、Emacs標準の M-x switch-to-next-buffer とは全く別物で優れものです。詳細はるびきちさんの記事が参考になるでしょう。

;; iflipb
(setq iflipb-ignore-buffers (list "^[*]" "^magit"))
(bind-key "C-<right>" 'iflipb-next-buffer)
(bind-key "C-<left>" 'iflipb-previous-buffer)

私は org-modeを使わないので C-<right> C-<left> に key bind してますが、そこはお好みで設定してください。