在GNU emacs中,每次按 Ctrl-x Ctrl-b 查看我的所有缓冲区时,窗口将被拆分以显示缓冲区列表,或者如果我的窗口已经拆分2(例如,我将在下部窗口中运行一个shell),缓冲区列表出现在另一个窗口中。
我想要的行为是缓冲区列表出现在我的活动窗口中,这样我就可以选择我想要的缓冲区并继续在同一个窗口中工作,而不是必须 Ctrl-x Ctrl-o 到另一个缓冲区,选择缓冲区(用输入)并在另一个窗口中编辑该缓冲区...我用谷歌搜索了它但它似乎不是一个普遍的愿望?我想知道是否有人有elispy(或其他)解决方案?
答案 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来减少键击并提高准确性),然后点击返回。缓冲区列表将消失,新文件将在之前的活动窗口中打开。