【问题标题】:How can I more easily switch between buffers in Emacs?如何更轻松地在 Emacs 中的缓冲区之间切换?
【发布时间】:2011-11-15 16:41:22
【问题描述】:

我最近开始使用 emacs,大部分时间我都喜欢使用它。我唯一不喜欢的是在缓冲区之间切换。我经常打开一些缓冲区,我已经厌倦了使用C-x bC-x C-b,是否有任何软件包可以更轻松地在缓冲区之间切换?我已经查看了emacs wiki on switching buffers,我很感激对正在使用/享受的内容的洞察/反馈。谢谢。

【问题讨论】:

  • 我几乎从不使用 switch-to-buffer ^xb。 // 我经常使用缓冲区菜单(我已绑定到 ^bm - 我有自己的、高度非标准的键绑定)。 // 我也有切换到特定类型缓冲区的命令,例如^ss 切换到 shell 缓冲区,对缓冲区名称的 foo 部分使用完成读取,例如 *shell*.

标签: emacs


【解决方案1】:

您可以使用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 并获得类似于标签浏览的东西。

【讨论】:

  • 谢谢。这就是我要找的。​​span>
【解决方案2】:

更新: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 模式(Emacs

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"))

【讨论】:

  • 我个人使用ido-mode,我认为它非常相似。
【解决方案3】:

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

我的工具包由 ibuffer、windmove+framemove、winner-mode 和 custom binding 组成,用于制作 Cxleft/rightCcleft/right 使用起来更轻松。

【讨论】:

    【解决方案4】:

    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

    【讨论】:

    • 谢谢,这有帮助。我在 Ido 的文档中迷失了关于将文件从文件系统树添加到完成列表的内容。你对如何设置有同样的提示吗?
    • @danza 不确定你的意思。使用上述选项,通过C-x C-f 查找文件的完成列表会自动填充。
    • 我的问题没有意义,因为我误解了 Ido 提供的功能。我认为 Ido 会提供一种在任意深度查找文件的方法。最终我选择了helm-projectile。无论如何,您的回答让我能够非常快速地设置 Ido
    【解决方案5】:

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

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

    【讨论】:

      【解决方案6】:
      1. ido-mode 提供了一种切换缓冲区的有效方法。
      2. ibuffer 最适合管理所有打开的缓冲区。
      3. anything 适合从不同的事物中选择感兴趣的事物 来源。 (例如:一个键可以用来切换到另一个 缓冲区或打开最近关闭的文件或打开驻留的文件 在同一目录中或...任何您想要的...)

      【讨论】:

        【解决方案7】:

        我已将“§”键映射到 'buffer-list,我发现它非常有效。

        【讨论】:

        • 我在 Microsoft 键盘上做了类似的事情,将“菜单”键(在右手 Alt 和 Ctrl 之间)绑定到 ibuffer,我觉得这非常方便。
        【解决方案8】:
        • 我最喜欢的函数是 helm-mini,它是 helm 的一部分。

        与其他 helm 函数一样,它允许逐步缩小选择范围。它还会搜索您最近访问的缓冲区,这是重新打开缓冲区的一种非常好的方法。 Helm 一开始可能有点令人惊讶,作为一个新的 Emacs 用户,我发现它在视觉上让人难以抗拒,我更喜欢 idoibuffer,这在其他回复中已经提出了建议。但现在我非常喜欢它,并且一直用它来做无数的事情。

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

        mouse-buffer-menu 默认绑定到<C-mouse-1>(控制键+鼠标左键单击)并打开一个包含当前缓冲区列表的弹出窗口。

        【讨论】:

          猜你喜欢
          • 2011-06-07
          • 2011-10-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-09-21
          • 2011-08-02
          • 1970-01-01
          相关资源
          最近更新 更多