Help us understand the problem. What is going on with this article?

Emacs:タブを使わない究極のバッファー移動

More than 1 year has passed since last update.

Emacsのバッファー移動は、tabbar / ELscreen などのタブ系を使っていましたが、diredなどの隠れていてほしいバッファーまで開いてしまうのが嫌でした。

そんなときに、るびきちさんのこの記事を読んでiflipb.elを試してみました。

標準機能の switch-to-buffer に比べてユニークな動作をすることは上記の記事で理解できたのですが、GitHubのReadme を読むと以下のような機能も設定できることがわかりました。

  • 非表示のバッファーを設定できる:iflipb-ignore-buffers
  • 戻り機能(最後になったら先頭へ戻る)を設定できる:iflipb-wrap-around

iflipbの設定

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

ignore-buffersの設定は、正規表現が使えます。上記の設定では以下のバッファーを設定しています。

  • *scratch*などのアスタリスクのついたもの: "^[*]"
  • magit-statusを実行するたびに作られるもの: "^magit"
  • diredバッファー: "[dir]$"

私の場合、diredのバッファー名には、hogehoge[dir] というふうに [dir] を付加してファイル名と勘違いしないように工夫していますので、最後方の文字列にマッチさせる正規表現 "[dir]$" で機能します。

ミニバッファーがタブ代わりになる

実際に使ってみてわかったのですが、バッファー移動操作をするとミニバッファーに以下のように開いているバッファー名が表示されます。(カレントバッファーは、[ ]で囲われて表示されます。)

Alt Text

tabbar感覚で使えるのでなかなか面白いです。

scratchバッファーだけは直ぐに開きたい

作業中に付箋感覚で使ったり、ちょこっとした式を評価したりとよく使うので*scratch*だけはどんなタイミングでも直ぐ開きたいですね。そのためにELscreenをタブ無しで使うことにしました。

ヒントになったのは下記の記事です。

elscreenの設定

;; elscreen
(setq elscreen-display-tab nil)  ;; Turn off tabs
(setq elscreen-tab-display-kill-screen nil)
(setq elscreen-tab-display-control nil)
(elscreen-start)
(elscreen-create) ;; start with 2 tabs

(bind-key "C-<tab>" 'elscreen-next)

ただし上記設定だけでは*scratch*を二面開く…という感じになって味気ないので、Emacs起動時のカレントバッファーには、以前、別記事で紹介した dashboard を表示させるようにしました。

Alt Text

こうすることでelscreenの裏面に*scratch*バッファーが開かれ、表面に*dashboard*が表示されます。そして、C-<tab>することで表裏の切り替えができるのです。

実際の作業は表面を使い、iflipbを使って複数のバッファーを行き来し、必要なときはC-<tab>でいつでも*scratch*が呼び出せるという仕組みです。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした