アスタリスクを飛ばす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 件のコメント :
コメントを投稿