回答:
emacsのあらゆる種類のバッファーで機能する基本的な方法は、ヒット(別名+ )によって使用される動的な略語です。M-/
alt/
これにより、テキストが展開され、現在のバッファーまたは現在開いている他のバッファーに既に存在する他の文字列が複製されます。
C ++またはJava(またはその他)に固有の言語である、より広範なコード補完については、コードテンプレートまたはスニペットパッケージをご覧ください。StackOverflowのこの関連する質問には、いくつかの議論があります。これらの議論でよく言及されるのはyasnippetです。emacs ブログのこの投稿にはスクリーンキャストデモがあります。
@Dougの答えは少し時代遅れであり、彼の焦点は事前定義されたスニペットを使用したコード拡張にあります。
OPの質問は、インテリセンス(たとえば、クラスの自動完全メソッド名)に関するものだと思います。
以前はヒッピーエキスパンドが一般的でしたが、構文アナライザーはemacs tagsです。したがって、ctagsがサポートするすべての言語をサポートします(C ++、Javaを含む)。しかし、ctagsはコードの分析に正規表現のみを使用するため、結果は完全ではありません。詳細については、私のinit-hippie-expand.elをご覧ください。あなたはの値をチェックすることから始めることができますhippie-expand-try-functions-list
オートコンプリートは、洗練されたUI(ドロップダウンメニュー、コンソールウィンドウでも)を備えた最新のオートコンプリートです。clangをバックエンドとして使用する場合。インテリセンスははるかに優れています。clangを機能させるには、オートコンプリートのプラグインであるauto-complete-clangをインストールする必要があります。clangがサポートする言語(C / C ++ / Obj-C)のみをサポートします。以下のようシルヴァン・ベナーは指摘し、あなたが使用することができるのemacs-eclimを実際に日食の実行可能ファイルを呼び出すJavaの構文解析のバックエンドとして。そのため、オートコンプリートはjavaをサポートできます。詳細については、私のinit-auto-complete.elを参照してください。
セマンティックは、UIとバックエンド解析エンジンの両方を提供します。遅いです。ドロップダウンUIは問題ありませんが、Xウィンドウが必要です。インテリセンスの結果はctagsよりも優れています。そして、ドキュメントは私にはあまりにもギークです。詳細については、init-semantic.elを参照してください。
company-modeはオートコンプリートに似ていますが、違いはすべてを1つのバンドルにパッケージ化することです。たとえば、C ++開発者は企業モードのインストールのみが必要です(オートコンプリートにはサードパーティのプラグインが必要です)。UIのもう1つの違いは、会社が候補を自動的に表示することです。社内で押すキーが少なくなります。カスタマイズ後のオートコンプリートでも同じことを行うことができます。
要約すると、オートコンプリート、会社は最も人気のある2つの選択肢です。セマンティックおよびヒッピー拡張も歓迎されますが、あまり使用されていません。他の人は言及するのは簡単すぎて、その機能はすでにビッグ4でカバーされています。たとえば、オートコンプリートはyasnippetを入力ソースとして使用できます(オートコンプリートはUIを提供しますが、実際の候補はyasnippetバックエンドによって生成されます)。
私が使用することをお勧めメジャーコード補完プラグインとしてオートコンプリートまたは会社のいずれかをし、セマンティックやヒッピー拡大補完プラグインとしてのいずれか。
会社モードとヒッピーエキスパンドを使用しているのは、
現在(2017年)会社モードはオートコンプリートよりも積極的に維持され、サードパーティのプラグイン(ラテックスプラグインなど)が追加されています
hippie-expandはあまりアクティブではありませんが、TAB
company-mode / semantic / auto-completeが使用しているキーを占有しません
C ++ / Javaで会社モードを使用している場合は、変更することができますcompany-backends
。
会社モードに関するいくつかのヒント、
の値を微調整する必要がある場合がありますcompany-backends
。たとえば、その値がであるとします(company-eclim company-semantic company-clang (company-dabbrev-code company-gtags company-etags company-keywords))
。次に、company-eclim
ゼロ以外の候補を取得できるcompany
場合は、javaを記述していると考えられるため、後にバックエンドを実行しませんcompany-eclim
。
見てみましょう(company-dabbrev-code company-gtags company-etags company-keywords)
。これら4つのバックエンドはすべて一緒に使用されます。たとえば、company-dabbrev-code
ゼロ以外の候補を正常にフェッチした後でも、他の3つのバックエンドが実行されます。
実際には、多くの場合、バックエンドの順序を再調整するか、新しいバックエンドを追加する必要があります(company-rtags
、など)。
complete.el
を試してみることもできます。これは非常に古く、ほとんど知られていませんが、それが提供するバッファ内補完の種類は有用です。M-x find-library complete
、ファイル内のコメントを読みます。