14

有人可以帮我理解 emacs 25 中的列表缓冲区(又名Ctrlx- Ctrlb)行为吗?

我习惯看到的行为是它在另一个 Emacs 窗口(虚拟 Emacs 窗口)中打开缓冲区列表,如有必要,会拆分出第二个窗口来执行此操作。在某些版本中,它使用哪个其他窗口并不总是非常确定(如果我有超过 2 个),但我至少可以指望它不使用光标所在的那个。

我最近安装了 25.0.50.1 来解决远程文件打开错误(有效!),现在它并不总是这样做。很多时候,它会在我的光标所在的同一个窗口中打开缓冲区列表。它通常以以前的方式工作。我无法弄清楚它选择这样做的任何押韵或原因。

有人可以告诉我它现在使用的算法吗?当我无法预测哪个窗口被替换时,它几乎不可能管理多个 emacs 窗口以供参考查看。

4

1 回答 1

5

我猜你主要关心的是有一个方便的方法来切换缓冲区,而不是理解 emacs 的源代码,所以我强烈建议检查helm包:http ://tuhdo.github.io/helm-intro.html 安装并按照教程操作大约需要 10 到 20 分钟,非常值得。我保证。

安装helm并启用它后,您的按键顺序是Ctrl- x bShows open buffers, recently opened files

您将获得在 emacs 中工作的许多其他工具的强大功能。我在切换缓冲区和看似“混乱”的缓冲区弹出窗口时遇到了同样的问题。安装后helm,问题被最小化到不可见,因为它很容易切换到您想要的缓冲区。

更新

处理包安装错误和包兼容性: M-x list-load-path-shadows查看是否有任何冲突包。而且由于你可能没有很多外部包,我建议备份~/.emacs.d并有一个新的空包。此外,在安装包的大多数情况下,我尝试使用 emacs 包管理器。使用包管理器的好处:

  • 帮助检查依赖关系
  • 避免手动下载和解包。
  • 可以批量更新已安装的包

以下是启用melparepo 和安装包的工作流程

M-x customize-group RET package
# Click or move cursor to and enter: Package Archives
# Insert the melpa repository. 
Archive name: melpa
URL or directory name: http://stable.melpa.org/packages/
#Save above settings and then you can use the following to install packages:
M-x list-packages RET
f to filer package names
i to mark for installation
x for execution of installation
u for unmark package at cursor. 

# to avoid using load-path repeatedly,
# I have this in my .emacs before any 'require' command:
; Set path recursively to one folder
(let ((default-directory "~/.emacs.d/elpa/"))(normal-top-level-add-subdirs-to-load-path))
于 2015-07-16T10:13:31.740 回答