当我输入一个左括号('(')?时,如何让Eclipse不要填写自动完成?

时间:2014-08-05 15:22:33

标签: eclipse autocomplete key-bindings

所以,在Eclipse Luna上,我经常遇到我正在键入方法名称的情况,但是第一个自动完成建议不是我要查找的方法,而是前缀等效但更长的东西,如本示例中所示:

Unhelpful autocomplete suggestions

在示例中,我只想要element(String name)方法,因此我不是点击Return,而是键入(。非常令人讨厌的结果是:

After accidentally triggering autocomplete

这显然不是我想要的。当我点击左括号(()时,有没有办法防止Eclipse执行自动完成?

这些是我的内容辅助设置(很明显,我在这个eclipse安装中根本没有安装代码推荐器): Content assist settings enter image description here

5 个答案:

答案 0 :(得分:3)

对此的黑客攻击是改变Eclipse对提案进行排序的方式。

您可以转到Preferences菜单,然后转到要编辑排序的部分。然后到de Editor部分和Content Assist。 例如,对于Java编辑器,它将是Preferences > Java > Editor > Content Assist

在窗口中间或多或少会看到一个名为Sorting and filtering的部分。里面有一个名为Sort proposals的选项,您可以将其从by relevance更改为alphabetically。保存结束。

通过此操作,您将按字母顺序获取提案列表顺序,element()将在以element开头的其他方法之前完成。

修改 在Ubuntu 14.04中运行的Eclipse Luna测试,它的工作原理。在编写(时,您仍然可以完成代码,但将使用提案列表中提供的较短选项完成。如果你想使用另一种方法,你可以继续写一些字母,最短的选项会使提案失效,因为它与你写的不符。

答案 1 :(得分:2)

在Eclipse 4.11(2019-03)中以及可能更早的版本中,此问题的答案是在Preferences(首选项)→Java→Editor(编辑器)→Content Assist(内容辅助)→禁用除“ Enter”(输入)之外的插入触发器。在我选中该框后,编辑变得不那么烦人了。

我不知道为什么Eclipse在默认情况下不这样做。谁输入map.put(并希望自动填写到map.compute()

答案 2 :(得分:1)

您正在与之抗争的功能是新的“智能代码完成”,它根据平均使用次数来命令方法。不要问我从哪里得到数据。另见: http://www.eclipse.org/recommenders/manual/#intelligent-code-completion

要禁用此功能,请转至首选项页面代码推荐器|完成并取消选中“启用智能代码完成”。

答案 3 :(得分:0)

我猜你的问题是子字符串匹配。

转到窗口->首选项-> Java->编辑器>内容辅助。

在“对提案进行排序”部分中,取消选中“显示子字符串匹配项”。

我发现按相关性比按字母顺序更有用。 我通常会检查在调用目标中不可见的隐藏的“隐藏”提案和“隐藏已弃用的引用”。

希望对您有帮助。

答案 4 :(得分:0)

另一个可能对代码完成产生负面影响的问题是“ Java Proposals(Task-Focused)”。例如,它导致map.put()被map.compute()替换。

您可以通过“首选项” |“禁用” Java |编辑器内容辅助|高级。

另请参阅:http://literatejava.com/eclipse/bad-auto-completions-in-eclipse/

enter image description here