90

更新

这已在 Eclipse 2018-12中修复。此行为仍然是默认行为,但可以配置为关闭 - 请参阅接受的答案以了解如何

我将把这个问题留给后代,以及早期版本的 Eclipse


在 Eclipse 中,我通过访问为 Java 启用了智能感知风格的建议

Window -> Preferences -> Java/Editor/Content Assist

并设置以下

Auto activation delay (ms) -> 0
Auto activation triggers for Java -> .(abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ

来源 = Eclipse 智能感知?

除了一个烦人的问题外,这非常有效。当我点击spacebar时,正在键入的令牌会自动完成,其中包含建议列表顶部的任何内容。很公平,除了有时我会输入一个完全合法匹配的类/变量名,但这不会作为最重要的建议出现。所以当我自然而然地点击spacebarEclipse 时插入了一些完全错误的东西。

EG打字后Cookie我会点击spacebar并获得CookieMonster

这似乎是一个错误,并且经常发生以至于令人讨厌,但即使如此,我通常也不想spacebar触发自动完成。我可能想输入一个尚未声明的变量名,或类似的东西。我想使用自动完成作为辅助工具,但我的自然打字应该始终优先于它。

我想停止spacebar触发自动完成,或者退回到 using enter,或者更好地custom使用普通打字中未使用的键触发自动完成。这有可能吗?

我已经尝试过Content Assist中的所有设置,但无济于事。谷歌搜索这个问题只会返回一堆关于禁用自动完成功能的结果。


此问题已从 Eclipse 2018-12 [4.10] 修复,请参阅已接受的答案

它存在于所有以前的版本中,即2018-09 [4.9]、Photon [4.8]、Oxygen [4.7]、Neon [4.6] 等。

4

8 回答 8

26

问题跟踪器上有一个解决方案。将jar复制到 eclipse/dropins 文件夹中。随着下一次重新启动,空间被禁用为自动完成触发器。

https://bugs.eclipse.org/bugs/show_bug.cgi?id=348857

Eclipse 12-2018 及更新版本:这是本机工作,检查 Pyves 答案。

于 2013-10-26T07:24:10.473 回答
26

Eclipse 2018-12 已经为此打了补丁!

Bug 348857的补丁最近被合并到 Eclipse 项目中,并作为Eclipse 2018-12的一部分发布。您可以在此处下载该版本。

您现在有一个新选项可以禁用除 之外的所有插入触发器enter,这将防止spacebar导致自动完成。

只需转到Preferences... -> Java -> Editor -> Content Assist(或Window -> Preferences -> Java -> Editor -> Content Assist on Windows)并选择Disable insert triggers except 'Enter',如截图如下: 禁用插入触发器首选项

于 2018-12-20T22:15:26.843 回答
7

使用 eclipse 的 SDK 版本

1.打开Plug-ins View,找到org.eclipse.jface.text,右键,选择import as Source Project。导入后,您可以在工作区中找到它。

2.在 src/org/eclipse/jface/text/contentassist/CompletionProposalPopup.java

char[] triggers = t.getTriggerCharacter();
if(contains(triggers,key))

改成

if(key!='='&&key!=0x20&&contains(triggers,key))

3.导出org.eclipse.jface.text

右键单击org.eclipse.jface.text的项目文件夹,选择export-->Deployable plugins and Fragments,下一步,destination选择archive file,完成。用您生成的替换 eclipse/plugins 中的那个。

于 2014-02-20T05:19:00.200 回答
3

即使在 Indigo 中,空格键也是选择自动完成的关键。据我所知,这是无法配置的。事实上,这可能就是延迟存在的原因。

我建议将延迟设置为某个最佳值,使您可以private void ...舒适地键入内容,而不会触发private和的建议void。然后,如果您因为等待太久而收到建议,请按 Escape 中止 Content Assist。

于 2013-08-28T13:16:25.290 回答
0

与 davnicwil 相同的配置,相同的问题,仍在 eclipse 4.4 上。

解决方案:在(编辑器窗口)eclipse上截取(挂钩)SHIFT + SPACE(按住)并将其替换为ESC,SPACE(序列)。现在你我决定

  • 自动完成+空格:出现自动提示时按空格键
  • 只是 SPACE:按预定义的组合键或序列(例如 SHIFT+SPACE)

在 windows 上你可以使用http://www.heise.de/download/activaid.html (你也可以使用 AutoHotkey, java native hook, ...)

如何使用 ActivAid:

  1. 打开 ActivAid,选择“UserHotkeys”
  2. 点击“+”,设置描述
  3. 单击“快捷方式”,按例如 SHIFT+SPACE
  4. 命令:“{ESC}{SPACE}”(不带引号)
  5. 单击“+”,选择eclipse编辑器框架,按ENTER
  6. 单击确定,在 ActivAid 中确定

我的配置文件:activAid/settings/ac'tivAid.ini:[UserHotkeys]

Hotkey11=+Space
Path11=<Send>{ESC}{SPACE}
Description11=Eclipse Shift+Space -> Esc,Space
Category11=
Application11=ahk_class SWT_Window0

您还可以使用“HotStrings”重新映射非英语键盘上的键,例如ö->{,ä->} 等。

于 2014-11-05T20:54:13.073 回答
0

终于搞定了。

尝试下载此org.eclipse.jface.text.jar并将其复制到您的插件文件夹(通常为 eclipse/plugin)。不要忘记备份自己的。

适用于 Eclipse Juno。

如果链接失效,请评论,谢谢。

于 2014-12-01T08:54:00.143 回答
-3

在 Eclipse 中,转到 Window -> Preferences -> General -> Keys 并删除命令 Content Assist 的绑定。

于 2013-08-28T13:06:03.160 回答
-4

您可以通过复选框禁用自动激活

Window -> Preferences -> Java/Editor/Content Assist

并按需激活自动完成功能。默认的热键是

CTRL+Space

于 2013-01-14T17:48:33.127 回答