是否可以在 Emacs 中创建缓冲区组,以便更好地组织大量缓冲区?
例如,假设我正在处理一个软件项目的多个分支。我可能为同一文件的分支变体打开了单独的缓冲区。我希望能够按分支对缓冲区进行分组,并且能够查看仅属于当前分支的缓冲区。
以任意方式(不一定通过源代码分支)分组(或标记)缓冲区也可能有用。
答案1
透视模式(https://github.com/nex3/perspective-el)。它完全符合您描述的情况,类似于 GNOME 和 KDE 中的工作区概念。此模式与 projectile-mode 和 helm-mode 配合使用效果很好,它们分别增强了您的 emacs 以更好地处理项目和更好地搜索它们。
如果你不想自己设置这些模式,我建议你安装 emacs 的 prelude 和简单的设置视角。你可以查看我的 emacs 配置 (https://github.com/ksinkar/prelude) 来看看我是如何做到的。
答案2
我认为您可能正在寻找类似 ibuffer 的东西(内置于最新版本中)。它基本上就像 dired 的缓冲区一样。
M-x ibuffer
% n *.py # marks all buffers whose name ends with .py
t # inverts the marked buffers. Those which had marks, are unmarked and vice versa.
k # removed marked buffers from the list.
现在您应该有一个缓冲区,其中列出了所有以 *.py 结尾的文件。
欲了解更多信息,您可以C-h m
在 ibuffer 模式下(查看模式帮助)。
答案3
我建议尝试 elscreen:http://www.morishima.net/~naoto/software/elscreen/基本上,它允许您创建缓冲区组并在它们之间切换,就像它们是 Web 浏览器中的选项卡一样。我最喜欢的 elscreen 功能之一是每个组之间的帧分割可以不同,这在处理不同任务时非常有用。
答案4
您还iBuffer
可以将以下内容添加到您的.emacs
(setq ibuffer-saved-filter-groups
(quote (("default"
("Org" ;; all org-related buffers
(mode . org-mode))
("Programming" ;; prog stuff not already in MyProjectX
(or
(mode . c-mode)
(mode . c++-mode)
(mode . perl-mode)
(mode . python-mode)
(mode . emacs-lisp-mode)))
("LaTeX"
(mode . latex-mode))
("Directories"
(mode . dired-mode))
))))
此示例将缓冲区分组在一起org
。具有c-mode
、c++-mode
等的缓冲区pels-mode
将被分组。