所以我通常在 Emacs 中打开 3 个缓冲区。
- 我正在编写的实际代码的一个缓冲区。
- 用于所述代码的单元测试的一个缓冲区。
- 第三个缓冲区,显示单元测试的结果。当我运行单元测试时,该缓冲区位于其他两个缓冲区之下C-x SPACE。
如何禁用第三个缓冲区,以便按下C-x o时仅在缓冲区 1 和缓冲区 2 之间切换?目前,我在缓冲区 1、缓冲区 2、缓冲区 3、缓冲区 1 之间切换,等等。具体来说,我只想C-x o在缓冲区 1 和 2 之间切换。
谢谢你。
所以我通常在 Emacs 中打开 3 个缓冲区。
如何禁用第三个缓冲区,以便按下C-x o时仅在缓冲区 1 和缓冲区 2 之间切换?目前,我在缓冲区 1、缓冲区 2、缓冲区 3、缓冲区 1 之间切换,等等。具体来说,我只想C-x o在缓冲区 1 和 2 之间切换。
谢谢你。
对此的一般解决方案(可以看起来)如下所示:
(defvar ignore-windows-containing-buffers-matching-res '("\\*Help")
"List of regular expressions specifying windows to skip (if window contains buffer that matches, skip)")
(defadvice other-window (before other-window-ignore-windows-containing activate)
"skip over windows containing buffers which match regular expressions in 'ignore-windows-containing-buffers-matching-res"
(if (and (= 1 (ad-get-arg 0)) (interactive-p))
(let* ((win (next-window))
(bname (buffer-name (window-buffer win))))
(when (some 'identity (mapcar '(lambda (re)
(string-match re bname))
ignore-windows-containing-buffers-matching-res))
(ad-set-arg 0 2)))))
将变量自定义为与要跳过的缓冲区名称匹配的正则表达式。
Trey 的答案将完全符合您的要求(至少看起来会这样做;我还没有尝试过)。一个更通用的解决方案是使用swbuff
任何一个swbuff-x
或我自己的swbuff-advice
. 关于这三者的信息可以在Emacs Wiki swbuff 页面上找到。