在Emacs中,如何使用键盘选择完成列表?

时间:2013-08-06 15:11:43

标签: emacs autocomplete minibuffer

当我在迷你缓冲区中选项卡完成并且Emacs在新缓冲区中显示完成列表时,如何在不使用鼠标的情况下切换到该缓冲区?

我尝试了C-x o,但刚刚切换到第一个缓冲区,我进入了迷你缓冲区。

我也尝试了C-x b,但这给了我command attempted to use minibuffer while in minibuffer

最后,我尝试了C-x <C-right>,它给了我cannot switch buffers in minibuffer window

编辑:我在我的例子中谈到了迷你缓冲区的完成,但能够从常规缓冲区中访问完成列表(使用键盘)对我来说也很重要,而且不起作用。建议使用M-v快捷方式,但它似乎只能在M-x访问的迷你缓冲区内工作,在我尝试过的每个其他缓冲区中,M-v绑定到scroll down command并且不会切换到完成列表。我似乎甚至没有在其他miniuffers工作。例如,它在M-!调用的shell命令迷你缓冲区中不起作用。

2 个答案:

答案 0 :(得分:10)

您可以使用 M-v (记录为here)切换到完成缓冲区并将光标置于第一次完成时:

  

在迷你缓冲区中键入M-v,选择显示该窗口的窗口   完成清单(切换到完成)。这为使用铺平了道路   以下命令。 <PageUp><prior>也是如此。你也可以   以其他方式选择窗口......

编辑:根据您对原始问题的编辑看起来,您要求的是一种更全局地切换到完成缓冲区的方法。有一个函数switch-to-completions可以选择完成列表 - 您可以考虑将该函数绑定到您选择的键上,例如:

(define-key global-map (kbd "C-x t") 'switch-to-completions)

例如,这样的绑定允许我从 M - !调用的“Shell命令:”切换到完成,并将光标置于第一个可能的完成位置。

答案 1 :(得分:2)

您可以使用 Cx o 两次,或使用 M - Cx o ,它切换到前一个缓冲区而不是下一个缓冲区。