最近、複数のファイルを開いて編集することが多いので、バッファの切り替えをもうちょっと効率的にできないかと思っていろいろ調べてみました。
どうやら、Emacs に最初から入っている iswitchb を使えば C-x b でのバッファ切り替えをもうちょっと便利にできるみたい。
バッファ名の補完、スペース、左右矢印キー、タブ、C-f,C-bでの切り替えを設定し、その切り替えるたびに、window でプレビューされるように設定してみました。切り替え時の煩わしさがすっきり解決。これは良い機能だー。
[sourcecode]
;;バッファ切り替え(C-x b)
(iswitchb-mode t)
(iswitchb-default-keybindings)
(add-hook 'iswitchb-define-mode-map-hook
'iswitchb-my-keys)
(defun iswitchb-my-keys ()
"Add my keybindings for iswitchb."
(define-key iswitchb-mode-map [right] 'iswitchb-next-match)
(define-key iswitchb-mode-map [left] 'iswitchb-prev-match)
(define-key iswitchb-mode-map "\C-f" 'iswitchb-next-match)
(define-key iswitchb-mode-map " " 'iswitchb-next-match)
(define-key iswitchb-mode-map "\t" 'iswitchb-next-match)
(define-key iswitchb-mode-map "\C-b" 'iswitchb-prev-match)
)
(defadvice iswitchb-exhibit
(after
iswitchb-exhibit-with-display-buffer
activate)
"選択している buffer を window に表示してみる。"
(when (and
(eq iswitchb-method iswitchb-default-method)
iswitchb-matches)
(select-window
(get-buffer-window (cadr (buffer-list))))
(let ((iswitchb-method 'samewindow))
(iswitchb-visit-buffer
(get-buffer (car iswitchb-matches))))
(select-window (minibuffer-window))))
[/sourcecode]