Emacs缓冲区菜单:如何只显示文件和dired缓冲区?

7

我经常使用buffer-menu在不同的buffer之间进行切换。我想要列出那些是文件或dired的buffer。该如何实现?

3个回答

6
您可以使用 ibuffer
在那里,您可以定义您的缓冲区组。您可以标记缓冲区,使用过滤和排序,在标记的缓冲区中进行搜索/替换以及其他有用的操作。
对于您的情况,只需将 (ibuffer-filter-by-filename ".") 放入钩子即可。
这是我 .emacs 文件中的一个示例。
(require 'ibuffer)

(setq ibuffer-saved-filter-groups
      (quote (("default"
               ("dired" (mode . dired-mode))
               ("java" (mode . java-mode))
               ("org" (mode . org-mode))
               ("sql" (mode . sql-mode))
               ("xml" (mode . nxml-mode))))))    

(setq ibuffer-show-empty-filter-groups nil)

(add-hook 'ibuffer-mode-hook 
 (lambda () 
  (ibuffer-switch-to-saved-filter-groups "default")
  (ibuffer-filter-by-filename "."))) ;; to show only dired and files buffers

编辑。如果您想过滤掉临时缓冲区(其名称以*开头),则可以设置以下过滤器(正则表达式)。

(ibuffer-filter-by-name "^[^*]")

它说缓冲区名称应该以除 * 之外的任何字符开头。


我喜欢这个。但是 (ibuffer-filter-by-filename ".") 也会过滤掉 dired 缓冲区。 - Sabya
在ibuffer窗口中,您可以看到三列。我设置了一个过滤器,使得这一列的值不应为空(对于dired缓冲区和文件而言是这样的)。在您的情况下,dired缓冲区的文件名/进程列显示的是什么? - Oleg Pavliv
我看到4列:“MR”、“名称”、“大小”、“模式”、“文件名/进程”。在“文件名/进程”列中,我看到一个dired缓冲区的“〜/ Dropbox /”。 - Sabya
我认为如果我可以排除所有以“*”开头的缓冲区,那将会更容易。有没有什么办法可以做到这一点? - Sabya
是的,请查看我在答案中的编辑。 - Oleg Pavliv

2

缓冲区菜单+(Buffer Menu+)是您需要的工具。它将Dired缓冲区视为文件缓冲区,因此当您使用C-u C-x C-blist-buffersbuffer-menu)时,您只会看到Dired和文件缓冲区。


0

使用前缀参数(C-u M-x buffer-menu)调用buffer-menu将仅列出正在访问文件的缓冲区。不幸的是,我无法找到一种简单的方法来在该列表中包含dired。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接