アスタリスクを飛ばすnext/previous-bufferは書いてみると結構そのまんまでした.
(defun asterisked? (buf-name)
(= 42 (car (string-to-list buf-name))))
(defun move-to-scratch ()
(interactive)
(let ((current-buffer-name (buffer-name)))
(next-buffer)
(while (and (not (string= "*scratch*" (buffer-name)))
(not (string= current-buffer-name (buffer-name))))
(next-buffer))))
(defun next-buffer-with-skip* ()
(interactive)
(let ((current-buffer-name (buffer-name)))
(next-buffer)
(while (and (asterisked? (buffer-name))
(not (string= current-buffer-name (buffer-name))))
(next-buffer))))
(defun previous-buffer-with-skip* ()
(interactive)
(let ((current-buffer-name (buffer-name)))
(previous-buffer)
(while (and (asterisked? (buffer-name))
(not (string= current-buffer-name (buffer-name))))
(previous-buffer))))
こんな感じ.これに, 以下のように適当なキーバインドを割り当てればOKです.
(global-set-key "\C-z\C-e" 'previous-buffer-with-skip*) (global-set-key "\C-z\C-a" 'next-buffer-with-skip*)私の環境では, C-zはunsetしているので\C-z\C-eと\C-z\C-aに割り当てていますが, "\C-z\C-e"と"\C-z\C-a"の部分には, 任意の適当なキーを割り当てられます.
また, このままだと, *scratch*へ移動できないことがあるので, scratchへ移動するため, move-to-scratchを書いています. M-x move-to-scratchで, *scratch*バッファへ移動できます. shell/eshellへは, それぞれ, M-x shellや, M-x eshellで移動できます. これらは, global-set-keyなどでキーバインドしても移動できます.
使ってみると, 結構快適です.
0 件のコメント :
コメントを投稿