- iflipb 20170527.839(in MELPA)
- interactively flip between recently visited buffers
概要
iflipb.el
は、ワンタッチで
バッファを切り替えるEmacs Lispです。
直前・直後のバッファに切り替えるのであれば、
Emacs24で導入された
M-x switch-to-next-buffer
M-x switch-to-prev-buffer
があります。
これらは単純に
buffer-listの順に切り替えているだけですが、
iflipbでは
Windows他GUIシステムのAlt+Tabのように
連続的に実行されたときの挙動を
エミュレートしています。
コマンドの対応関係は以下のようになります
M-x switch-to-next-buffer
→M-x iflipb-next-buffer
M-x switch-to-prev-buffer
→M-x iflipb-previous-buffer
iflipbコマンドにおいて、
一部のバッファは条件により無視されます。
- C-uをつけないで実行したとき、*またはスペースから始まるバッファは無視される
- C-uをつけて実行したとき、スペースから始まるバッファは無視される
switch-to-*-bufferと
iflipb-*-bufferの挙動の違いを示します。
以下の状況では共通しています。
切り替わるバッファ バッファリスト ------------------------------------------------------ 初期状態: A B C D E 次のバッファ: A [B] C D E B A C D E 次のバッファ: A B [C] D E C A B D E 次のバッファ: A B C [D] E D A B C E 初期状態: A B C D E 次のバッファ: A [B] C D E B A C D E 次のバッファ: A B [C] D E C A B D E 前のバッファ: A [B] C D E B A C D E
ところが、ここから
両者の挙動が変わります。
switch-to-next-bufferを連続したとき、
ただ単にbuffer-listをたどるだけです。
切り替わるバッファ バッファリスト ------------------------------------------------------ 初期状態: A B C D E 次のバッファ: A [B] C D E A B C D E 次のバッファ: A B [C] D E A B C D E [Cで他の操作をする]: A B C D E 次のバッファ: A B C [D] E A B C D E
iflipb-next-bufferは以下の挙動になります。
iflipbユーザの意図はA→Cの切り替えで、
iflipb-next-bufferを2回連続で実行します。
そこでCで他の操作をした後に
Aに戻りたいときはそのまま
iflipb-next-bufferを実行できるようにします。
このことにより、ひとつのコマンドで
バッファの行き来ができます。
iflipb-previous-bufferは
行き過ぎたときに戻るために存在します。
切り替わるバッファ バッファリスト ------------------------------------------------------ 初期状態: A B C D E 次のバッファ: A [B] C D E B A C D E 次のバッファ: A B [C] D E C A B D E [Cで他の操作をする]: C A B D E 次のバッファ: C [A] B D E A C B D E
両者の違いは以下のコードで検証できます
。
以下のコードを実行する際、
ファイルを保存後に
全バッファが削除されますので
注意してください。
(save-some-buffers) (defun make-buffer-list () (dolist (b (cdr (buffer-list))) (ignore-errors (kill-buffer b))) (dolist (b '("B" "C" "D" "E")) (ignore-errors (kill-buffer b)) (get-buffer-create b)) (prog1 (buffer-list) (when (get-buffer "*scratch*") (switch-to-buffer "*scratch*") (rename-buffer "A")))) (keydef "C-z" (message "%S" (make-buffer-list))) (keydef "C-q" (message "%S" (buffer-list))) (global-set-key (kbd "M-o") 'switch-to-next-buffer) (global-set-key (kbd "M-O") 'switch-to-prev-buffer) (global-set-key (kbd "M-h") 'iflipb-next-buffer) (global-set-key (kbd "M-H") 'iflipb-previous-buffer) (make-buffer-list)
バッファ切り替えは微差で
操作性は大きく変わります。
気に入ったならばぜひとも導入してみてください。
インストール
パッケージシステムを初めて使う人は
以下の設定を ~/.emacs.d/init.el の
先頭に加えてください。
(package-initialize) (setq package-archives '(("gnu" . "http://elpa.gnu.org/packages/") ("melpa" . "http://melpa.org/packages/") ("org" . "http://orgmode.org/elpa/")))
初めてiflipbを使う方は
以下のコマンドを実行します。
M-x package-install iflipb
アップグレードする方は、
以下のコマンドでアップグレードしてください。
そのためにはpackage-utilsパッケージが必要です。
M-x package-install package-utils (初めてアップグレードする場合のみ) M-x package-utils-upgrade-by-name iflipb
設定 170212090019.iflipb.el(以下のコードと同一)
(global-set-key (kbd "M-o") 'iflipb-next-buffer) (global-set-key (kbd "M-O") 'iflipb-previous-buffer)
実行方法
$ wget http://rubikitch.com/f/170212090019.iflipb.el $ emacs -Q -f package-initialize -l 170212090019.iflipb.el
本サイト内の関連パッケージ
本日もお読みいただき、ありがとうございました。参考になれば嬉しいです。