emacs list-buffers行为

时间:2009-08-05 04:28:18

标签: emacs elisp

在GNU emacs中,每次按 Ctrl-x Ctrl-b 查看我的所有缓冲区时,窗口将被拆分以显示缓冲区列表,或者如果我的窗口已经拆分2(例如,我将在下部窗口中运行一个shell),缓冲区列表出现在另一个窗口中。

我想要的行为是缓冲区列表出现在我的活动窗口中,这样我就可以选择我想要的缓冲区并继续在同一个窗口中工作,而不是必须 Ctrl-x Ctrl-o 到另一个缓冲区,选择缓冲区(用输入)并在另一个窗口中编辑该缓冲区...我用谷歌搜索了它但它似乎不是一个普遍的愿望?我想知道是否有人有elispy(或其他)解决方案?

9 个答案:

答案 0 :(得分:58)

你可能想重新绑定 C-x C-b 来调用buffer-menu而不是list-buffers

(global-set-key "\C-x\C-b" 'buffer-menu)

答案 1 :(得分:13)

不完全是一个解决方案,但ido-mode提供了一种与缓冲区交互的不同且强大的方法。然后C-x b将显示所有打开缓冲区的列表,您选择的缓冲区将在当前窗口中打开。

答案 2 :(得分:13)

只需自定义变量same-window-regexps即可。 display-buffer将显示名称与当前所选窗口中的正则表达式匹配的任何缓冲区。

(您需要添加“[*]Buffer List”。)

答案 3 :(得分:4)

尝试添加

(ido-mode 1)

到.emacs,享受结果:)

答案 4 :(得分:4)

奇怪的是,这里没有关于ibuffer的答案。

我建议将此作为大多数Emacs用户的标准更改:

(global-set-key (kbd "C-x C-b") 'ibuffer)

ibuffer是默认缓冲区列表的一个非常高级的替代品,它不仅具有所要求的确切行为,还提供了丰富的其他功能。

我列出了一些ibuffer过滤和分组基础知识 Emacs: help me understand file/buffer management,但请务必阅读文档以获取详细信息。

答案 5 :(得分:3)

如果你喜欢原始缓冲区列表(而不是其他人提出的'buffer-menu解决方案),你可以使用它:

(global-set-key (kbd "C-x C-b") 'my-list-buffers)
(defun my-list-buffers (&optional files-only)
  "Display a list of names of existing buffers.
The list is displayed in a buffer named `*Buffer List*'.
Note that buffers with names starting with spaces are omitted.
Non-null optional arg FILES-ONLY means mention only file buffers.

For more information, see the function `buffer-menu'."
  (interactive "P")
  (switch-to-buffer (list-buffers-noselect files-only)))

这与以前的功能相同,仅在当前窗口中。

答案 6 :(得分:2)

我强烈推荐来自http://www.geekware.de/software/emacs/的bs.el安装它并:

(require 'bs)
(add-hook 'bs-mode-hook 'turn-on-font-lock)
(global-set-key "\C-x\C-b" 'bs-show)

它以正确的方式管理缓冲区和窗口配置,因此一切都需要最少的击键次数。

答案 7 :(得分:1)

不确定我在哪里,但是:

;;; Faster buffer switching
(global-set-key [(C tab)] 'buffer-menu) 

这使得Ctrl-Tab显示当前窗口中的所有缓冲区。然后,您可以导航到缓冲区并按Enter键访问它。

答案 8 :(得分:0)

另一个不是你要求的解决方案:不要用鼠标选择所需的缓冲区,而是完成键入其名称(使用tab-completion来减少键击并提高准确性),然后点击返回。缓冲区列表将消失,新文件将在之前的活动窗口中打开。