如何在Emacs中更轻松地切换缓冲区?

时间:2011-09-12 21:29:24

标签: emacs

我最近开始使用emacs,我很乐意在大多数情况下使用它。我唯一不喜欢的是在缓冲区之间切换。我经常打开一些缓冲区,而且我已经厌倦了使用C-x bC-x C-b,是否有任何软件包可以更容易地在缓冲区之间切换?我已经调查了emacs wiki on switching buffers,我很欣赏有关正在使用/享受的内容的见解/反馈。谢谢。

8 个答案:

答案 0 :(得分:24)

更新:iswitchb-mode在Emacs> = 24.4中已过时,替换为ido

iswitchdb的所有功能现在都由ido提供。罗斯在答案中提供了the documentation的链接。您可以使用.emacs中的以下内容激活(或使用Ross建议的自定义界面):

(require 'ido)
(ido-mode 'buffers) ;; only use this line to turn off ido for file names!
(setq ido-ignore-buffers '("^ " "*Completions*" "*Shell Command Output*"
               "*Messages*" "Async Shell Command"))

默认情况下,ido提供缓冲区名称和文件名的完成。如果您只想替换iswitchb的功能,则第二行会关闭此功能以获取文件名。 ido将忽略与ido-ignore-buffers中列出的正则表达式匹配的所有缓冲区。

下面针对iswitchb-mode描述的行为同样适用于切换缓冲区的ido

iswitchb-mode(Emacs< 24.4)

iswitchb-mode使用非常直观的缓冲区切换完成系统替换默认的C-x b行为。有更复杂的选择,但我从来没有比这更需要。

点击C-x b后,会显示所有缓冲区的列表。开始键入所需缓冲区的名称(或其名称的一部分),并缩小列表,直到只有一个缓冲区匹配。但是,您不需要完成名称,只要您想要的缓冲区突出显示,按下Enter将移动您。您还可以使用C-sC-r按顺序浏览列表。

您可以在.emacs中默认启用它:

(iswitchb-mode 1)

您还可以告诉它忽略您从未(或很少)需要切换到的某些缓冲区:

(setq iswitchb-buffer-ignore '("^ " "*Completions*" "*Shell Command Output*"
               "*Messages*" "Async Shell Command"))

答案 1 :(得分:14)

您可以使用C-x <right>next-buffer)和C-x <left>previous-buffer)在缓冲区中循环播放。您可以将S-<right>S-<left>绑定到这些函数。 (S是“超级密钥”或Windows密钥)。这样你就可以节省一些按键。

此外,请注意C-x b有一个默认条目,即它显示一个标准值(大多数时候这是以前查看的缓冲区),因此您不必总是明确输入缓冲区名称

另一个不错的技巧是使用C-x 2C-x 3打开单独的窗口。这会同时显示几个缓冲区。然后,您可以将C-<tab>绑定到other-window,并获得类似于标签式浏览的内容。

答案 2 :(得分:8)

M-x customize-group ido然后将Ido Mode设置为Turn on both buffer and file并将Ido Everywhere设置为on。然后单击顶部的Save for future sessions按钮,享受文件和缓冲区的ido魔力。阅读the docs以了解如何使用ido。

另外,请查看smex

答案 3 :(得分:5)

  1. ido-mode提供了一种切换缓冲区的有效方法。
  2. ibuffer最适合管理所有已打开的缓冲区。
  3. anything适合从不同的人那里选择感兴趣的东西 源。 (例如:单个键可用于切换到另一个键 缓冲区或打开最近关闭的文件或打开驻留的文件 在同一目录或......任何你想要的......)

答案 4 :(得分:2)

如果你看过Emacs Wiki,你可能已经掌握了所有这些信息,但这里有一些其他相关的Q&amp; As:

我的工具包包括ibuffer,windmove + framemove,winner-mode和custom binding使 Cx left / right Cc / 减少使用麻烦。

答案 5 :(得分:2)

我已将“§”-key映射到“缓冲区列表”,我发现它非常有效。

答案 6 :(得分:1)

我已经开始使用任何东西几天了,我真的很喜欢它: http://www.emacswiki.org/emacs/Anything

Emacs-fu对任何事情都有很好的介绍: http://emacs-fu.blogspot.com/2011/09/finding-just-about-anything.html

答案 7 :(得分:0)

  • 为此,我最喜欢的功能是helm-mini,它是helm的一部分。

与其他头盔功能一样,它允许逐步缩小选择范围。它还会搜索您最近访问的缓冲区,这是重新打开缓冲区的一种非常不错的方法。刚开始时,Helm可能会有点令人惊讶,作为Emacs的新用户,我在视觉上感到不知所措,因此我更喜欢idoibuffer,在其他答复中都建议使用。但是现在我绝对喜欢它,并一直将其用于无数事物。

  • 我偶然发现的东西可能会有用:

mouse-buffer-menu默认绑定到<C-mouse-1>(控制键+鼠标左键),并打开一个弹出窗口,其中列出了当前缓冲区。