【问题标题】:Auto completion keyword in EmacsEmacs 中的自动完成关键字
【发布时间】:2011-09-08 00:00:56
【问题描述】:

例如,当我输入 int main() 时,如果我可以点击 tab 并获取我想要的关键字列表(自动完成),那就太好了。如何在 Emacs 中做到这一点?

【问题讨论】:

  • Emacs 对于自动完成来说太酷了:P 我使用 emacs 是因为它默认没有自动完成功能。这样你就可以更好地学习代码:) 只是我的两分钱
  • @Jesus:这是真的,但我的朋友说 emacs 不酷,因为它没有它。所以我试图说服他emacs可以做任何事情:)
  • 可以,如果您愿意,我可以向您推荐一个自动完成功能,该功能仅适用于任何开放缓冲区中的内容(不是真正特定于语言的内容)我在大型项目中使用它,所以我不会拼写错误有时事情。
  • @Jesus:你试过“公司”吗?这是否提供特定于语言的自动完成功能?
  • 抱歉不熟悉。我倾向于完全避免自动完成 :) 谁需要 IDE 来编码

标签: emacs


【解决方案1】:

您可以使用 M-/ 自动完成。还有other autocomplete packages可用。

【讨论】:

  • M-/ 默认绑定到dabbrev-expand。许多人将此键重新绑定到更全面的hippie-expand(其中包含 dabbrev 扩展选项等)。
  • FWIW,我最近还写了以下答案,它生成所有 hippie-expand 完成并使用 ido-completing-read 让用户从迷你缓冲区中选择他们想要的一个:stackoverflow.com/questions/6515009/…
【解决方案2】:

您需要CEDET,它包含许多可用于使 EMACS 具有许多您可以在更现代的 IDE 中看到的功能的好工具。

【讨论】:

  • 您不需要 CEDET 来进行简单的自动完成。
  • 感谢您告诉我有关 CEDET 的信息,我想从现在开始我的工作效率会更高。
【解决方案3】:

您可以使用yasnippet。通过写'main'然后TAB,你得到

int main (int argc, char *argv[])
{

  return 0;
}

(这并不是真正的自动完成。)

【讨论】:

  • @kindahero:抱歉,我没有看到你的评论。
  • yashnippet 不仅仅自动完成主要功能吗?我怎样才能扩展它来做更多的事情?你能举出更多例子吗?
  • 该软件包捆绑了许多 sn-p 扩展,例如,'if' + TAB 为您提供带括号的 'if'、块的大括号和括号内的点;编写条件并按 TAB 将点放在大括号内。您也可以创建自己的 sn-ps;它非常简单(不需要 elisp),请参阅 this
【解决方案4】:

Asher 对列表的回答可能是最好的,但如果您想要一些可以选择的可能(非语义)完成下拉列表,您可以使用 auto complete mode

【讨论】:

    猜你喜欢
    • 2012-04-09
    • 2011-05-04
    • 1970-01-01
    • 2012-10-09
    • 1970-01-01
    • 1970-01-01
    • 2013-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多