1

在启用 emacs ido 模式的情况下切换缓冲区时,完成列表会显示在 minibuffer 中。似乎有一个“功能”,将已经打开的缓冲区放在列表的末尾。但是,我经常在多个窗格中打开同一个缓冲区。

有没有办法关闭这个“功能”,或者做相反的事情:已经打开的缓冲区是否位于完成列表的前面?

4

2 回答 2

1

ido 模式的要点是您不使用箭头在 minibuffer 中的缓冲区之间导航。相反,您键入缓冲区名称的一部分。在这种情况下,缓冲区在列表中的位置无关紧要。

于 2011-09-06T02:17:49.787 回答
0

除非您想深入 ido 的肠子,否则这是不可能的。

正如 eGlyph 已经说过的:您可能错误地使用了 ido(还有C-sfor<right>C-rfor <left>;不需要箭头键)。

但是您可以定义用于在已显示的缓冲区中进行选择的命令(此处仅从当前帧开始,如果您想要所有显示的缓冲区,则必须首先通过`frame-list 收集窗口):

(defun choose-from-shown-buffers ()
  (interactive)
  (let ((buffers (mapcar (lambda (window)
                            (buffer-name (window-buffer window)))
                         (window-list))))
      (pop-to-buffer (ido-completing-read "Buffer: " buffers))))
于 2011-09-06T13:18:11.903 回答