在启用 emacs ido 模式的情况下切换缓冲区时,完成列表会显示在 minibuffer 中。似乎有一个“功能”,将已经打开的缓冲区放在列表的末尾。但是,我经常在多个窗格中打开同一个缓冲区。
有没有办法关闭这个“功能”,或者做相反的事情:已经打开的缓冲区是否位于完成列表的前面?
ido 模式的要点是您不使用箭头在 minibuffer 中的缓冲区之间导航。相反,您键入缓冲区名称的一部分。在这种情况下,缓冲区在列表中的位置无关紧要。
除非您想深入 ido 的肠子,否则这是不可能的。
正如 eGlyph 已经说过的:您可能错误地使用了 ido(还有C-s
for<right>
和C-r
for <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))))