Emacs-打开缓冲区列表而不替换另一个缓冲区



我有一个框架,一个窗口。我使用Cx3,我现在有两个窗口。

我使用Cx-Cb来查看缓冲区列表,但它在另一个窗口中打开了它,但没有把重点放在它上。如果我在第二个窗口上打开了缓冲区,那就更烦人了。

我更愿意在当前具有焦点的窗口中打开缓冲区列表,或者暂时将焦点更改为缓冲区列表。

首先,我想说ibuffer函数与您想要的功能类似,并且在当前窗口中也是如此,这绝对值得一看。

现在谈谈你的实际问题。默认情况下,C-x C-b调用函数list-buffers。如果您使用C-h f搜索该命令,它将显示文档,您可以通过单击带下划线的buff-menu.el文本来查看该函数的源代码。

现在我们可以查看list-buffers的来源,第一个调用的函数是display-buffer。这听起来很有希望。现在我们可以再次使用C-h f来搜索display-buffer命令。通过阅读本文档,我们可以看到变量display-buffer-alist决定了display-buffer的工作方式,进而决定了list-buffers的工作方式。然后我们可以看到,通过将("*Buffer List*" . display-buffer-same-window)添加到display-buffer-alist,您将获得所需的结果。

总而言之,您只需将(add-to-list 'display-buffer-alist '("*Buffer List*" . display-buffer-same-window))放在init文件中即可进行更改。

请尝试其中一种:

  1. 打开当前拥有焦点的缓冲区列表:
(取消对my:list缓冲区的资助(&optional arg)(交互式"P")(显示缓冲区(列表缓冲区没有选择参数)'(显示缓冲区时相同的窗口))
  1. 改变焦点
(defun-my:list-bffers2(&optional arg)(交互式"P")(选择窗口(列出缓冲区参数))

最新更新