Eclipse 智能感知?

Posted

技术标签:

【中文标题】Eclipse 智能感知?【英文标题】:Eclipse Intellisense? 【发布时间】:2011-02-25 22:52:56 【问题描述】:

如何让 Eclipse 在我键入时自动提出建议?我正在寻找 Resharper 的类似 Visual Studio Intellisense 的功能。

目前我每次都必须按CTRL+Space

【问题讨论】:

【参考方案1】:

您不必按 CTRL * space 但可能延迟太大或您不喜欢触发器(默认为“.”)。前往

窗口 -> 首选项 -> Java/编辑器/内容辅助

并根据自己的喜好更改自动激活下的设置。

如果这不适用于 Windows 用户,请查看 this answer。

【讨论】:

用户 Kevin Rossi 试图编辑指出这一点(这确实是一条评论):“这不适用于 Eclipse Juno C/C++ 发行版” Eclipse 中的每个编辑器都可能有自己的自动激活触发器——激活相同的字符在任何语言中都没有意义。 在 Mac 中是 ADT -> Preferences -> Java/Editor/Content Assist【参考方案2】:

通过将“Java 的自动完成触发器”设置为

,我已经更接近于类似 VisualStudio 的行为了
.(abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ

并将延迟设置为 0。

现在我想了解如何在按下时自动完成方法名称(就像 VS 的 Intellisense 所做的那样。

【讨论】:

这是哪个版本的eclipse? “Java 的自动激活触发器”文本框只允许我输入 4 个字符。 这很好用。好多了,因为它现在实际上会显示局部变量和所有内容。谢谢! @HappyCoder4U 这可能无济于事,但我使用的是 eclipse 3.7M5。 你是天才 :) 但是对于非 Java 语言没有这样的设置 :( 太棒了。谢谢!在 Mac (3.6.1) 上使用 Eclipse,参数名称是“Java 的自动激活触发器” 一切正常,但现在我得到了一些非常恼人的行为:假设我想输入“private int counter;”我从私有开始,自动完成功能开始提供一些建议(首先是 PrivateCredentialPermission)。当我输入 private 并按“空格”时,将插入 PrivateCredentialPermission。有什么办法吗?【参考方案3】:

如果即使您已启用 Code Assist 也无法正常工作,则 Eclipse 的配置文件可能已损坏。一个对我有用的解决方案(在 Eclipse 3.5.2 上)是:

    关闭 Eclipse。 重命名工作区目录。 启动 Eclipse。 (这会创建一个新的工作区目录。) 从旧工作区导入(带副本)Java 项目。

【讨论】:

也为我修复了它 不错的解决方案,它对我真的很有帮助,我的 Eclipse 在 (.) 之后无法显示智能感知,我不得不使用 ctrl+space 3 次来显示它,谢谢你的好解决方案:- )【参考方案4】:

托尼是一个纯粹的天才。然而,为了实现更好的自动完成,请尝试将触发器设置为:

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz =.(!+-*/~,[@#$%^&

(特别按使用顺序排列,以获得更快的性能:)

【讨论】:

此方法引入了一些错误。例如,如果我输入=,它会立即提出一些建议。如果我按空格,= ,它会自动插入第一个匹配项。 检查 Java 提案、Java 类型提案和 Java 非类型提案并将它们按顺序移到顶部,对我有用。 有关空间问题的一些解决方案,请参阅此堆栈溢出问题:***.com/questions/14297735/… 除句号外,所有特殊字符都会使 Intellisense 行为变得古怪。基本上,如果您在输入字符后不希望它进行智能感知,那么您就不希望它出现在此列表中。【参考方案5】:

我曾经遇到过同样的问题,然后我搜索并找到了这个,它对我有用:

我没有选中一些框,所以我再次检查了它们,然后它起作用了。去吧

Windows > 首选项 > Java > 编辑器 > 内容辅助 > 高级

并选中您想要的复选框。

【讨论】:

您也可以按优先级排列提案。如果是显示与你的标识符相关的方法和属性,把 Java Proposals (Task Specific) 先放【参考方案6】:

d3dave 的回答很酷。然而 theGreenGarbage 提到了一个我也觉得很烦人的问题。所以这里有一个在“=”符号后和输入空格时不会立即提示的内容:

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz.(!+-*/~,[@#$%^&

我所做的只是从数组中删除空格和 '=' 字符 :)

或者,如果您在输入空格时需要建议,但不是在“=”符号之后:

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz .(!+-*/~,[@#$%^&

【讨论】:

这应该是公认的答案。不过,这会导致一些滞后。

以上是关于Eclipse 智能感知?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Eclipse IDE for Java 中启用自动完成(智能感知)[重复]

如何在 PHP/Eclipse 中对 foreach 循环中从数组中拉出的自定义对象进行智能感知?

在Eclipse中开发angularjs

怎样让Eclipse的智能提示像VS一样霸气

如何在eclipse中为java代码添加快捷键

Intellisense 在 Eclipse 中消失了,如何找回它