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

如何在Emacs中更轻松地切换缓冲区?,emacs,Emacs,我最近开始使用emacs,我大部分时间都很喜欢使用它。我唯一不喜欢的是在缓冲区之间切换。我经常打开一些缓冲区,我已经厌倦了使用C-xb和C-xc-b,是否有任何软件包可以使缓冲区之间的切换更容易?我已经调查过了,我希望能得到关于我们正在使用/享受什么的见解/反馈。谢谢 您可以使用C-x(next buffer)和C-x(previous buffer)在缓冲环中循环。您可以将S-和S-绑定到这些函数。(S是“超级键”或windows键)。这样可以节省一些击键次数 此外,请注意,C-x b有一个默

我最近开始使用emacs,我大部分时间都很喜欢使用它。我唯一不喜欢的是在缓冲区之间切换。我经常打开一些缓冲区,我已经厌倦了使用
C-xb
C-xc-b
,是否有任何软件包可以使缓冲区之间的切换更容易?我已经调查过了,我希望能得到关于我们正在使用/享受什么的见解/反馈。谢谢

您可以使用
C-x
next buffer
)和
C-x
previous buffer
)在缓冲环中循环。您可以将
S-
S-
绑定到这些函数。(
S
是“超级键”或windows键)。这样可以节省一些击键次数

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

另一个好方法是使用
C-x2
C-x3
打开单独的窗口。这将同时显示多个缓冲区。然后您可以将
C-
绑定到
其他窗口
,并获得类似于选项卡式浏览的内容。

更新:
iswitchb模式
在Emacs>=24.4中已过时,由
ido
取代。
iswitchdb
的所有功能现在都由
ido
提供。罗斯在他的回答中提供了一个链接。您可以在
.emacs
中使用以下内容激活(或按照Ross的建议使用自定义界面):

(需要“ido”)
(ido模式“缓冲区”);;仅使用此行关闭文件名的ido!
(setq ido忽略缓冲区“(^”“*完成*”“*Shell命令输出*”
“*消息*”“异步Shell命令”))
默认情况下,
ido
提供缓冲区名称和文件名的补全。如果您只想替换
iswitchb
的功能,第二行将关闭文件名的此功能
ido
将忽略与
ido ignore buffers
中列出的regexp匹配的任何缓冲区

下面描述的
iswitchb模式的行为同样适用于切换缓冲区的
ido

iswitchb模式(Emacs<24.4)
iswitchb模式
将默认的
C-x b
行为替换为非常直观的缓冲区切换和完成系统。有更复杂的选择,但我从来没有比这更需要

点击
C-x b
后,将显示所有缓冲区的列表。开始键入所需缓冲区的名称(或其部分名称),列表将缩小,直到只有一个缓冲区匹配为止。不过,您不需要填写名称,只要突出显示所需的缓冲区,按enter键就会将您移动到该缓冲区。您还可以使用
C-s
C-r
按顺序在列表中移动

默认情况下,您可以在.emacs中启用此选项:

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

(setq iswitchb buffer ignore'(“^”“*完成*”“*Shell命令输出*)
“*消息*”“异步Shell命令”))

如果您查看过Emacs Wiki,您可能已经掌握了所有这些信息,但以下是一些其他相关的问答:


我的工具包由ibuffer、windmove+framemove、winner模式和a组成,使C-xleft/right和C-cleft/right使用起来不那么麻烦。

M-x自定义组ido
然后将
ido模式设置为
同时打开缓冲区和文件,并将
ido Everywhere
设置为
打开。然后单击顶部的
为将来的会话保存
按钮,享受文件和缓冲区的ido魔力。通过阅读了解如何使用ido


另外,看一看

我已经开始使用任何东西好几天了,我真的很喜欢它:

Emacs fu对任何事情都有很好的介绍:

  • ido模式
    提供了切换缓冲区的有效方法
  • ibuffer
    最适合管理所有打开的缓冲区
  • 任何东西
    都有助于从不同领域选择感兴趣的东西 来源。(例如:一把钥匙可以用来切换到另一把钥匙 缓冲区或打开最近关闭的文件或打开文件 在同一个目录或…任何你想要的…)
  • 我已将“§”-键映射到“缓冲区列表”,我发现它非常有效。

    • 我最喜欢的功能是
      helmmini
      ,它是的一部分
    与其他舵功能一样,它允许逐渐缩小选择范围。它还搜索最近访问的缓冲区,这是重新打开缓冲区的一种非常好的方法。Helm一开始可能有点让人惊讶,作为一个新的Emacs用户,我发现它在视觉上让人难以忍受,我更喜欢
    ido
    ibuffer
    ,这在其他回复中已经提出。但现在我绝对喜欢它,并且一直用它做无数的事情

    • 我偶然发现了一些有用的东西:

    鼠标缓冲区菜单
    默认绑定到
    (控制键+鼠标左键单击)并打开一个弹出窗口,其中包含当前缓冲区的列表。

    是否涵盖了这一点?我几乎从不使用切换到缓冲区^xb。//我经常使用缓冲区菜单(我已经绑定到^bm-我有自己的、高度非标准的键绑定)。//我还有一些命令可以切换到特定类型的缓冲区,例如,^ss切换到shell缓冲区,使用对缓冲区名称(如*shell*)的foo部分的完整读取。我个人使用
    ido模式,我认为这非常类似。我在Microsoft键盘上做了类似的操作,绑定“menu”键(在右手Alt和Ctrl之间)我觉得非常方便的是,我会把它发送到ibuffer
    ibuffer