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

在Emacs中,如何使用键盘选择完成列表?,emacs,autocomplete,minibuffer,Emacs,Autocomplete,Minibuffer,当我在一个小缓冲区中完成tab,Emacs在一个新缓冲区中显示一个完成列表时,我如何在不使用鼠标的情况下切换到该缓冲区 我尝试了C-XO,但它只是切换到了第一个缓冲区,我从中输入了minibuffer 我还尝试了C-Xb,但这给了我一个命令,即在minibuffer中尝试使用minibuffer 最后我尝试了C-x,它让我无法在minibuffer窗口中切换缓冲区 编辑:在我的示例中,我谈到了minibuffer完成,但是能够使用键盘从常规缓冲区中访问完成列表对我来说也很重要,而且不起作用。有人

当我在一个小缓冲区中完成tab,Emacs在一个新缓冲区中显示一个完成列表时,我如何在不使用鼠标的情况下切换到该缓冲区

我尝试了C-XO,但它只是切换到了第一个缓冲区,我从中输入了minibuffer

我还尝试了C-Xb,但这给了我一个命令,即在minibuffer中尝试使用minibuffer

最后我尝试了C-x,它让我无法在minibuffer窗口中切换缓冲区

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

您可以使用C-xo两次,或者使用M-C-xo切换到上一个缓冲区而不是下一个缓冲区。

您可以使用M-v切换到完成缓冲区并将光标放在第一个完成缓冲区:

在minibuffer中键入M-v,选择显示 完成列表切换到完成。这就为使用它铺平了道路 下面的命令。或者做同样的事情。你也可以 以其他方式选择窗口

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

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

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

C-x o两次不起作用,因为第一个命令关闭完成列表。但是,将负参数应用于缓冲区开关命令确实效果良好。不过我会用C-C-xo。而且,它不是在第一次完成时插入光标,而是在缓冲区的开始处插入光标,这很糟糕,因为我必须一直向下移动。这真的是人们使用完成缓冲区的方式吗?错误:不,我怀疑很少有人真正直接与完成缓冲区交互。通常的方法是通过在minibuffer中键入和制表符来继续过滤选项,直到获得唯一的结果,完成缓冲区仅作为一个视觉参考。奇怪的是,这似乎对我不起作用。顺便说一句,我使用的是Emacs v24.2.1。当我在minibuffer中按m-v时,它只显示缓冲区的开始,而没有选择完成列表。奇数。按PageUp怎么样?这在我的Mac电脑上应该也能正常工作。您可以尝试在不读取初始化文件的情况下重新启动Emacs,即Emacs-qYou可能已将M-v绑定到某些其他函数。当我使用M-x输入微缓冲区时,它会起作用,但当我尝试从其他微缓冲区(如M-)访问完成列表时,它不会起作用!或者从任何正常的缓冲区。请参阅下面我的答案编辑中的建议。