スペースバーのキーを押すとEclipseでオートコンプリートがトリガーされないようにする


86

更新

これはEclipse2018-12で修正されました。この動作はまだデフォルトですが、オフに構成できます-方法については、受け入れられた回答を参照してください

後世のため、そして以前のバージョンのEclipseを使用している場合は、質問をそのままにしておきます。


Eclipseでは、次のコマンドを使用して、Javaのインテリセンススタイルの提案を有効にしました。

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

以下を設定します

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

ソース= Eclipse Intellisense?

これは、1つの厄介な問題を除けば、見事に機能します。をspacebar押すと、入力されているトークンは、候補リストの一番上にあるものでオートコンプリートされます。完全に一致するクラス/変数名を入力する場合があることを除いて、十分に公平ですが、これ最上位の提案として表示されません。したがって、私が自然にspacebarEclipseを押すと、完全に間違ったものが挿入されます。

EG入力後、Cookieヒットspacebarして取得しCookieMonsterます。

これはバグのようで、煩わしいほど頻繁に発生しますが、それにもかかわらず、一般的にオートコンプリートをトリガーしたくありませんspacebar。まだ宣言されていない変数名、または同様のものを入力したい場合があります。オートコンプリートをヘルパーツールとして使用したいのですが、自然なタイピングを常に優先する必要があります。

spacebarオートコンプリートのトリガーを停止してenter、の使用にフォールバックするかcustom、通常の入力では使用されないキーを使用してオートコンプリートをトリガーすることをお勧めします。これは可能ですか?

コンテンツアシストのすべての設定をいじってみましたが、役に立ちませんでした。質問をグーグルで検索すると、オートコンプリート機能の無効化に関する一連の結果が返されます。


この問題はEclipse2018-12 [4.10]から修正されています。承認された回答を参照してください。

以前のすべてのバージョン、つまり2018-09 [4.9]、Photon [4.8]、Oxygen [4.7]、Neon [4.6]などに存在します。


+1私は同じ問題と戦っていました...これを解決する運はありますか?スペースを押して不要なものを取得するのは非常に面倒です(選択しませんでした!)...これは「型宣言」には適しているかもしれませんが、「変数名」には適していません。
emgsilva 2013

残念ながら違います。同じ問題が最新バージョンのKepler(4.3)に存在するかどうか知っていますか?まだアップグレードしていませんが、アップグレードする場合は、質問を更新します
davnicwil 2013

3
残念ながら、Kepler(4.3)でもまったく同じ動作が発生します...それは本当に残念です。私はその自動アクティベーションがとても好きですが、いくつかの状況でそのような選択をするのは本当に面倒です。私の一時的な解決策は、アクティブ化時間をわずかに増やして、新しい変数名のほとんどを書き込むことです...しかし、これは常に機能するとは限りません。私はこの問題をもう少し調査し、おそらくこれをEclipseに報告します。これは、機能ではなくバグだと思うからです。
emgsilva 2013

stackoverflow.com/questions/7371618/…の重複の可能性 (Indigoもすでにこのように動作していることを示します)
herman 2013

6
この質問に対する賛成票の数と回答に対する賛成票の欠如から判断すると、Eclipseはこれを修正する必要があるようです。
andrewb 2014年

回答:


20

Eclipse 2018-12には、すでにパッチが適用されています。

バグ348857のパッチは、最近Eclipseプロジェクトにマージされ、Eclipse2018-12の一部としてリリースされました。そのバージョンはここからダウンロードできます。

を除くすべての挿入トリガーを無効にする新しいオプションが追加されましたenter。これspacebarにより、オートコンプリートが発生しなくなります。

単純に行く設定... - > Javaの- >エディタ- >コンテンツアシスト(または[ウィンドウ- >設定- > Javaの- >エディタ- >コンテンツアシストWindowsの場合)を選択しEnterキーを除いて無効に挿入トリガをに示すように、以下のスクリーンショット: 挿入トリガー設定を無効にする


1
素晴らしい、どうもありがとう。私はあなたの答えに見出しを追加したので、人々はそれが現在のバージョンのものであることがはっきりとわかります。他の答えは時代遅れです。
callmebob

1
@Pyvesこの新しい答えを受け入れるのにしばらく時間がかかりました、お詫びしますが、私はもはやEclipseを使用せず、それを検証することができませんでした。とにかく、はい、これは問題を確実に解決するように見えます、そして私はそれ6年以上で解決されたこと本当にうれしく思います!
davnicwil

デバッグシェルビュー内でトリガー抑制が機能しないという問題が発生している人はいますか?私にとって、スペースバーはオートコンプリートをトリガーしています。(私は2019年6月にいます)
ウィリアムダットン

@William Duttonは、別のバグレポートでフラグを立てる可能性があります。
パイブ

26

これに対する課題追跡システムには解決策があります。eclipse / dropinsフォルダーにjarをコピーします。次の再起動で、スペースはオートコンプリートトリガーとして無効になります。

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

Eclipse 12-2018以降:これはネイティブで機能しています。Pyvesの回答を確認してください。


2
見た目は素晴らしいですが、EclipseJunoでは機能しません。動作に変更はありません。スペースバーはオートコンプリートをアクティブにします。これはケプラーであなたのために働いていますか?バグスレッドに記載されているツールを切り替えるためのツールバーボタン/メニュー項目はどこにありますか?
davnicwil 2013年

1
はい、Kepler Serviceリリース1で動作します。ただし、ツールバー項目も表示されません。
パスカリウス2013年

これは、Eclipse Luna SR2(4.4.2-ビルドID:20150219-0600)では機能しません。
BrainSlugs83 2015

Eclipse Lunaの動作を変更して、TabとEnterのみをインテリセンス完了キーとして受け入れるようにプラグインをすばやく作成しました(以下の@AndrewXuのプラグインの作成に関する回答を参照)。
BrainSlugs83 2015

1
@Pascaliusは、長い間最良の回答をありがとうございましたが、Eclipseはこれを修正し、ネイティブに構成可能にしました。これは新しい回答で指摘されているので、問題を解決するための最良の方法であるため、代わりにそれを受け入れました。
davnicwil

7

SDKバージョンのEclipseを使用する

1.プラグインビューを開き、org.eclipse.jface.textを見つけて右クリックし、[ソースプロジェクトとしてインポート]を選択します。インポート後、ワークスペースに表示されます。

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のプロジェクトフォルダーを右クリックし、「エクスポート」->「デプロイ可能なプラグインとフラグメント」を選択し、次に、宛先でアーカイブファイルを選択して終了します。Eclipse /プラグインにあるものを、生成したものと交換します。


2
このビューを開く方法がわからない場合は、[ウィンドウ]-> [ビューの表示]-> [その他...]に移動し、フィルターテキストボックスに「プラグイン」と入力して、ボックスから[プラグイン]を選択します。以下で「OK」を押してください。
BrainSlugs83 2015

また、よりVisual Studioのようなエクスペリエンスを探している場合は、そのブロックを完全にコメントアウトし(デフォルトのブロック)、「\ t」ブロックをコメントアウトしてから、「\ r」とを処理するブロックを見つけることをお勧めします。 '\ n'(これら2つの真上)に '\ t'を追加します。-これにより、タブ補完が提供されます。:-)
BrainSlugs83 2015

(このすべての問題を経験したくない人のために、Eclipse Luna SR2 4.4.2の64ビットバージョンの私のものがあります:1drv.ms/1GZhJPq-上記の変更を覚えておいてください。)
BrainSlugs83

@ BrainSlugs83可能であれば、a)コードをgithubに投稿するか、b)「。」を追加します。完了トリガーまで、それは素晴らしいでしょう。
lakemalcom 2015

なぜ0x20代わりに使用したの' 'ですか?
モニカの訴訟に資金

3

スペースバーは、Indigoでもオートコンプリートを選択するための鍵となっています。私の知る限り、これは構成できません。実際、それがおそらく遅延が存在する理由です。

私はあなたのようなものを入力することができますいくつかの最適値に遅延を設定することをお勧めprivate void ...するための提案トリガすることなく快適にprivateしてをvoid。次に、待機時間が長すぎたために提案が表示された場合は、[エスケープ]を押してコンテンツアシストを中止します。


遅延を増やしても、成功は限られています。
レドワルド2013年

0

davnicwilと同じ構成、同じ問題、まだEclipse4.4にあります。

解決策:(エディターウィンドウ)日食をインターセプト(フック)SHIFT + SPACE(長押し)して、ESC、SPACE(シーケンス)に置き換えます。今、あなたは私のどちらかを決める

  • オートコンプリート+スペース:自動暗示が表示されたらスペースを押します
  • スペースだけ:事前定義されたキーの組み合わせまたはシーケンスを押します(例:SHIFT + SPACE)

Windowsでは、http: //www.heise.de/download/activaid.htmlを使用できます(AutoHotkey、Javaネイティブフックなども使用できます)。

ActivAidのハウツー:

  1. Ac'tivAidを開き、「UserHotkeys」を選択します
  2. 「+」をクリックして、説明を設定します
  3. 「ショートカット」をクリックします。たとえば、SHIFT + SPACEを押します。
  4. コマンド: "{ESC} {SPACE}"(引用符なし)
  5. 「+」をクリックし、Eclipseエディターフレームを選択して、ENTERを押します。
  6. Ac'tivAidで[OK]、[OK]をクリックします

私の設定ファイル: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」で再マップすることもできます(例:ö-> {、ä->})。


0

ついにそれを解決した。

このorg.eclipse.jface.text.jarをダウンロードして、プラグインフォルダー(通常はeclipse / plugin)にコピーしてみてください。自分のものをバックアップすることを忘れないでください。

EclipseJunoで動作します。

リンクが機能しない場合は、これについてコメントしてください。ありがとうございます。


MARS1 Eclipseを開始できませんでした。java.lang.RuntimeException:アプリケーション "org.eclipse.ui.ide.workbench"がレジストリに見つかりませんでした。
ティイナ2016年

-3

のチェックボックスから自動アクティベーションを無効にすることができます

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

必要に応じてオートコンプリート機能を有効にします。このためのデフォルトのホットキーは

CTRL+Space


3
全体的な問題は、スペースバーがオートコンプリートを実行せずに、自動アクティベーション動作が必要なことです
davnicwil 2013年

-3

Eclipseで、「ウィンドウ」->「設定」->「一般」->「キー」に移動し、「コンテンツアシスト」コマンドのバインディングを削除します。


1
これにより、ctrl + Spaceを使用して提案を表示する可能性がなくなります。OPが望んでいるのは、スペースバーを使用して提案の選択を無効にする方法です。そのためのキーバインディングは存在しません。
ハーマン2013
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.