停止空格键按键以在Eclipse中触发自动完成

时间:2013-01-12 20:39:22

标签: java eclipse

<子>的更新

这已在Eclipse 2018-12 中修复。此行为仍然是默认行为,但可以配置为关闭 - 请参阅the accepted answer了解

的方式

我将保留问题,因为它适用于后代,以及那些早期版本的Eclipse


在Eclipse中,我通过转到

为Java启用了intellisense风格的建议
Window -> Preferences -> Java/Editor/Content Assist

并设置以下内容

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

source = Eclipse Intellisense?

除了一个烦人的问题外,这项工作非常出色。当我点击空格键时,键入的令牌会自动填充建议列表顶部的任何内容。很公平,除了有时我会键入一个具有完全合法匹配的类/变量名称,但这个不会显示为最高建议。所以,当我自然地点击空格键时,Eclipse会插入一些完全错误的内容。

  键入Cookie

E.G。我会点击空格键并获取CookieMonster

这看起来像是一个错误,并且经常发生烦人的事情,但即使这样我也不希望空格键一般触发自动完成。我可能想要输入尚未声明的变量名称或类似的名称。我想使用自动完成功能作为辅助工具,但我的自然输入应始终优先于它。

我想停止空格键触发自动完成,然后回退到使用输入,或者更好的是仍然使用自定义触发自动完成键不用于普通打字。 这有可能吗?

我已经玩过内容辅助中的所有设置无济于事。谷歌搜索问题只会返回一系列关于禁用自动完成功能的结果。


此问题已在Eclipse 2018-12 [4.10]中修复,请参阅the accepted answer

它存在于所有先前版本中,即 2018-09 [4.9], Photon [4.8], Oxygen [4.7],< em>霓虹灯 [4.6]等。

8 个答案:

答案 0 :(得分:26)

有一个解决方案on the issue tracker。 复制eclipse / dropins文件夹中的jar。下一次重启时,空格会被自动填充触发。

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

Eclipse 12-2018及更新版本:这是本地工作,请查看Pyves的答案。

答案 1 :(得分:7)

使用eclipse的SDK版本

1.open Plug-ins查看并找到org.eclipse.jface.text,右键单击,选择import作为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.Export org.eclipse.jface.text

右键单击org.eclipse.jface.text的项目文件夹,选择export - &gt; Deployable plugins and fragments,next,destination select archive file,finish。将eclipse / plugins中的那个替换为你生成的那个。

答案 2 :(得分:4)

Eclipse 2018-12已经为此进行了修补!

Bug 348857的补丁程序最近已合并到Eclipse项目,并作为 Eclipse 2018-12 的一部分发布。您可以下载该版本here

您现在有了一个新选项,可以禁用除 enter 之外的所有插入触发器,这将防止 spacebar 引起自动补全。

只需转到首选项... -> Java -> Editor -> Content Assist (或 Window -> 首选项-> Java -> Editor -> Content Assist Windows),然后选择 禁用除“ Enter” 以外的插入触发器,如以下屏幕截图所示: Disable insertion triggers preferences

答案 3 :(得分:3)

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

我建议将延迟设置为某个最佳值,以便您可以轻松输入private void ...之类的内容,而不会触发privatevoid的建议。如果因为等待时间过长而得到建议,请按Escape以中止内容辅助。

答案 4 :(得分: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. 打开Ac'tivAid,选择“UserHotkeys”
  2. 点击“+”,设置说明
  3. 点击“捷径”,按下例如SHIFT + SPACE
  4. 命令:“{ESC} {SPACE}”(不带引号)
  5. 单击“+”,选择eclipse编辑器框架,按ENTER键
  6. 单击“确定”,在“Ac'tivAid”中单击“确定”

    我的配置文件: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”重新映射非英语键盘上的键,例如ö-&gt; {,ä-&gt;}等。

答案 5 :(得分:0)

终于解决了。

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

适用于Eclipse Juno。

如果链接不起作用,请对此发表评论,谢谢。

答案 6 :(得分:-3)

您可以通过

中的复选框禁用自动激活
Window -> Preferences -> Java/Editor/Content Assist

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

CTRL + 空间

答案 7 :(得分:-3)

在Eclipse中转到Window - &gt;偏好 - &gt;一般 - &gt;键并删除命令Content Assist的绑定。