Emacs中的代码完成

Emacs中的代码完成,emacs,autocomplete,Emacs,Autocomplete,我正在尝试使用Emacs,因为它似乎比记事本++好一点 我正在尝试使用代码完成功能(也称为intellisense),但不知道如何使用 首先,我键入M-x,然后键入eval expression,然后在微型缓冲区中键入 (打印(字体系列列表)) 因此,我输入(print(font-f),然后按TAB,我得到一个包含以下内容的窗口: Click <mouse-2> on a completion to select it. In this buffer, type RET to sel

我正在尝试使用Emacs,因为它似乎比记事本++好一点

我正在尝试使用代码完成功能(也称为intellisense),但不知道如何使用

首先,我键入
M-x
,然后键入
eval expression
,然后在微型缓冲区中键入

(打印(字体系列列表))

因此,我输入
(print(font-f
),然后按
TAB
,我得到一个包含以下内容的窗口:

Click <mouse-2> on a completion to select it.
In this buffer, type RET to select the completion near point.

Possible completions are:
font-face-attributes
font-family-list
单击完成项以选择它。
在此缓冲区中,键入RET以选择接近点的完成。
可能的完成情况如下:
字体面属性
字体系列列表

我可以使用鼠标单击第二个选项(
font-family list
)。但是如何仅使用键盘选择该选项?快捷键是什么?

在这些情况下,完成是通过制表符完成的。完成将添加任何唯一字符,直到发生冲突(在您的情况下,它添加了字母“a”)。此时,您需要键入下一个区分它的字符。如果键入mTAB,Emacs将选择
font-family list

,您可以使用更好的补全系统,但不能在使用
eval expression
M-:
调用的小缓冲区中

我建议您使用
M-x ielm
调用交互式elisp shell。现在您可以启用
公司模式的完成,这将带来如下内容:

安装公司,位于:

并在需要时调用它:

M-x company-mode

你会注意到它可以在shell和其他语言中工作:)

我问的问题与:

从和上面的答案中,我意识到我需要执行
switch to completions
函数。因为
M-v
对我不起作用,我在minibuffer中绑定Shift选项卡切换到completions窗口:

(define-key minibuffer-local-map  (kbd "<S-tab>") 'switch-to-completions)
(定义密钥小型缓冲区本地映射(kbd“”)”切换到完成)
编辑:M-v(或Alt-v)在新安装中为我工作-但是由于使用
cua模式
,它停止了工作

我正要安装,但当我阅读说明时,它说如果
completion cycle threshold
变量设置为一个整数,比如
3
,那么如果有
3
或更少的完成选项,那么
TAB
将循环使用它们。我们仍然可以使用
M-v


尽管阅读了它的描述,
minibuffer complete cycle
似乎更加精巧。

在本例中,只需输入区分可能性的字符,即
m
。您可以使用
m-:
而不是
m-x eval表达式
。您好,谢谢您的建议。但是minibuffer下拉列表应该是g组织模式的ood。仍在搜索解决方案。如果我发现了什么,将更改我的答案。
(define-key minibuffer-local-map  (kbd "<S-tab>") 'switch-to-completions)