emacs list-buffers行为

hat*_*rix 46 emacs elisp

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

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

zim*_*668 59

您可能希望重新绑定C-x C-b以调用buffer-menu而不是list-buffers:

(global-set-key "\C-x\C-b" 'buffer-menu)
Run Code Online (Sandbox Code Playgroud)

  • 我想知道是否有办法可以使用短键,如1,2,...或a,b,c ......更快地打开一个缓冲区,我知道ac-jump-buffer可以做到这一点,但是它的缓冲区列表太简单了,没有额外的信息,比如模式,缓冲区菜单中的size列.如果你解决了这个问题,那将是值得赞赏的.@ zimbu668 (2认同)

小智 13

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


jro*_*way 13

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

(你需要添加" [*]Buffer List".)

  • 这是这里的最佳答案,因为它归结为真正的问题(修改显示缓冲区的行为方式),而不是提供解决方法。 (2认同)

phi*_*ils 6

奇怪的是,这里没有关于ibuffer.

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

(global-set-key (kbd "C-x C-b") 'ibuffer)
Run Code Online (Sandbox Code Playgroud)

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

我在Emacs 中列出了一些 ibuffer 过滤和分组基础 :帮助我理解文件/缓冲区管理,但请务必阅读文档以获取详细信息。


Łuk*_*Lew 5

尝试添加

(ido-mode 1)
Run Code Online (Sandbox Code Playgroud)

到您的 .emacs,并享受结果:)