Emacs中的代码完成

时间:2015-04-20 15:44:16

标签: emacs autocomplete

我正在尝试使用Emacs,因为它看起来比Notepad ++好一点。

我正在尝试使用代码完成功能(a.k.a intellisense),但不知道该怎么做。

首先,我输入M-x,然后输入eval-expression,然后输入迷你缓冲区,我想输入

(print (font-family-list))

所以我输入(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

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

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

您可以拥有更好的完成系统,但不能使用eval-expressionM-:调用的迷你缓冲区。

我建议您使用M-x ielm调用交互式次级elisp shell。现在,您可以启用company-mode的完成,这会带来类似的内容:

company-mode completion in shell-mode

安装公司,位于melpa

package-install RET company RET

并在您需要时调用它:

M-x company-mode

您会注意到它适用于shell和其他语言:)

答案 2 :(得分:0)

我真的问同样的问题:

  

In Emacs, how do I select the completion list with the keyboard?

Completion Commands doc和上面的回答中,我意识到我需要执行switch-to-completions功能。因为M-v对我不起作用,我最终绑定了Shift-Tab,以便在迷你缓冲区中切换到完成窗口:

(define-key minibuffer-local-map  (kbd "<S-tab>") 'switch-to-completions)

编辑: M-v(或Alt-v)正在全新安装 - 但是自从使用cua-mode后,它就停止了工作。

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

虽然阅读了它的描述,minibuffer-complete-cycle似乎更加精致。