Emacs 不断打开大量缓冲区 (Clojure)

Emacs keep opening lots of buffers (Clojure)

我是 Clojure 的初学者,出于某些原因我认为 Emacs 是一个不错的选择,因为它在 clojure 中的使用。

但真正让我烦恼的是 Emacs(用于处理 Clojure 项目)打开了一堆缓冲区。即,当我单击 "Read a directory to operate in its files" 和 select lein 的项目根目录时,我需要 select myproject.core.clj 并且 Emacs 会在其他缓冲区中打开所有超级目录。当使用 cider 进行编译并处理许多 clj 文件时,不断交替处理所有这些缓冲区是很痛苦的。

如何限制 Emacs 打开的缓冲区数量?

(我知道 C-x k)

(如有英文错误请见谅)

当我第一次开始使用 Emacs 时,同样的问题让我遇到了很多麻烦。解决方案是使用 C-x bC-x C-b 以外的东西在缓冲区之间切换。特别是:

  • 我在某些情况下使用 Projectile's C-c p f to switch to arbitrary files in my project. It works very nicely because it takes your .gitignore into account. This can be annoying,但在大多数情况下效果很好。
  • 我使用 project-explorer 浏览项目中所有文件的树视图。 project-explorer 的忽略功能不如 Projectile 的忽略功能好,但您可以在需要时使用 M-o 切换它们,这是 Projectile 没有的功能。 project-explorer-open 没有默认绑定,所以我将它绑定到 C-x p.
  • 我使用 Ido 和 ido-ubiquitous 使所有选择命令(包括 C-c p f)更易于使用。
  • 如果您在 CIDER 中丢失了 REPL 缓冲区,您可以使用 C-c C-z.
  • 立即找回它
  • 如果您面前已经有多个 windows,windmove 提供了一种在它们之间切换的极快方式。

您通常最终会打开很多缓冲区,但由于您现在可以轻松地在它们之间切换,所以这不再是问题。您可以在 my personal Emacs config.

中找到此类设置的完整示例

就我个人而言,我使用 C-x C-f 打开文件,而不用为目录打开缓冲区。