【问题标题】:emacs list-buffers behavioremacs 列表缓冲区行为
【发布时间】:2010-11-16 21:37:47
【问题描述】:

在 GNU emacs 中,每次我按 Ctrl-x Ctrl-b 来查看我的所有缓冲区时,窗口都会被拆分以显示缓冲区列表,或者如果我的窗口已经拆分2(例如,我将在下方窗口中运行一个shell),缓冲区列表出现在另一个窗口中。

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

【问题讨论】:

    标签: emacs elisp


    【解决方案1】:

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

    (global-set-key "\C-x\C-b" 'buffer-menu)
    

    【讨论】:

    • 我想知道有没有办法可以用1、2、...或a、b、c...等快捷键更快地打开一个缓冲区,我知道ac -jump-buffer 可以,但是它的缓冲区列表太简单了,没有缓冲区菜单中的模式、大小列等额外信息。如果你解决了这个问题,那将不胜感激。 @zimbu668
    【解决方案2】:

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

    (您需要添加“[*]Buffer List”。)

    【讨论】:

    • 这是最好的答案,因为它涉及到真正的问题(修改显示缓冲区的行为),而不是提供解决方法。
    【解决方案3】:

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

    【讨论】:

    • 我想知道你为什么被否决...总是很高兴知道我有选择!
    • 如果您回来查看,感谢您的建议。我现在是 ido 的粉丝。
    【解决方案4】:

    奇怪的是,这里没有关于 ibuffer 的答案。

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

    (global-set-key (kbd "C-x C-b") 'ibuffer)
    

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

    我列出了一些 ibuffer 过滤和分组基础知识 Emacs: help me understand file/buffer management,但请务必阅读文档了解详细信息。

    【讨论】:

      【解决方案5】:

      尝试添加

      (ido-mode 1)
      

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

      【讨论】:

        【解决方案6】:

        如果你喜欢原始的缓冲区列表(而不是其他人提出的'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)))
        

        和之前的功能一样,只是在当前窗口中。

        【讨论】:

        • 如果我已经在缓冲区列表中,我现在正在使用带有 switch-to-buffer-other-window 和特殊行为的变体。谢谢。
        【解决方案7】:

        我强烈推荐 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)
        

        它以正确的方式管理缓冲区和窗口配置,因此一切都需要最少的击键次数。

        【讨论】:

          【解决方案8】:

          不知道我从哪里得到的,但是:

          ;;; Faster buffer switching
          (global-set-key [(C tab)] 'buffer-menu) 
          

          这使得 Ctrl-Tab 显示当前窗口中的所有缓冲区。然后,您可以导航到缓冲区并按 Enter 键访问它。

          【讨论】:

          • 谢谢 - 我已经保留了 Ctrl-tab :)。但缓冲菜单是关键。
          【解决方案9】:

          另一个不是你要求的解决方案:不要用鼠标选择所需的缓冲区,而是完成输入它的名称(使用制表符补全来减少击键并提高准确性),然后按回车键。缓冲区列表将消失,新文件将在之前的活动窗口中打开。

          【讨论】:

          • 谢谢 - 但我主要在终端工作,所以那里没有鼠标......但有时我会混淆某些缓冲区是否以 * 开头,但你是对的,制表符完成甚至会帮助我在那里。
          • 这不会为我删除缓冲区列表窗口?
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-08-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-08-10
          • 2011-03-31
          相关资源
          最近更新 更多