所以,在Eclipse Luna上,我经常遇到我正在键入方法名称的情况,但是第一个自动完成建议不是我要查找的方法,而是前缀等效但更长的东西,如本示例中所示:
在示例中,我只想要element(String name)
方法,因此我不是点击Return,而是键入(
。非常令人讨厌的结果是:
这显然不是我想要的。当我点击左括号((
)时,有没有办法防止Eclipse执行自动完成?
这些是我的内容辅助设置(很明显,我在这个eclipse安装中根本没有安装代码推荐器):
答案 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/