我的.emacs中有这个:
(global-set-key "\M-s" 'switch-to-buffer)
还有:
(defvar crs-hated-buffers
'("KILL" "*Compile-Log*" "*Buffer List*" "*Messages*" "*Occur*"
"*Completions*" "*compilation*" "TAGS" "*scratch*" "*grep*"
"source" "headers"))
(setq iswitchb-buffer-ignore (append '(
"^ "
"^\\*Buffer"
"^\\*Completions\\*"
"^\\*tramp"
"^\\*Dired log\\*"
"^\\*Quail Completions\\*"
"^\\*Disabled Command\\*"
"^TAGS"
)
crs-hated-buffers))
如何从交换机到缓冲区列表中排除这些讨厌的缓冲区?
答案 0 :(得分:5)
可能是这样的:
(global-set-key [?\M-s] 'my-switch-to-buffer)
(defun my-switch-to-buffer ()
(interactive)
(let ((completion-regexp-list '("\\`[^*]"
"\\`\\([^T]\\|T\\($\\|[^A]\\|A\\($\\|[^G]\\|G\\($\\|[^S]\\|S.\\)\\)\\)\\).*")))
(call-interactively 'switch-to-buffer)))
它可能需要通过M-x report-emacs-bug
提供功能请求。
答案 1 :(得分:1)
您可以查看ErgoEmacs的“切换到用户缓冲区”功能:http://www.ergoemacs.org/emacs/elisp_next_prev_user_buffer.html
他排除了所有内部缓冲区(以*开头的缓冲区),如果您习惯使用 magit , shell 甚至,这可能会出现问题grep 缓冲区。
«Emacs经常生成很多内部缓冲区,用户对循环不感兴趣。 ⁖{ scratch ,消息, shell , Shell命令输出,发生,< em>完成, Apropos , info ,...}。您可以定义自己的下一个用户缓冲区来跳过emacs的缓冲区,您可以定义next-emacs-buffer,它只通过emacs的缓冲区循环。 »
我自己发现我不需要那种过滤器,因为我使用ido来切换缓冲区。