10

VimのCtrl+Nは通常、次のように機能します。いくつかの文字を入力してCtrl+Nを押すと、Vimは開いているすべてのバッファー内の単語に基づいて補完を提供します。

Emacsのソリューションは同一である必要はありません。私は主に次のように使用します。変数を宣言してから、後のコードで使用します。しかし、私はソースコードを解析しないという軽量のアプローチが好きです。

4

6 に答える 6

20

デフォルトで M-/ にバインドされた dabbrev-expand が必要です。私は Vim を使用していませんが、あなたの説明からすると、まったく同じことを行います。

于 2009-01-15T21:33:01.503 に答える
13

お気に入りのキーにバインドされたヒッピーエキスパンドを試してください

(global-set-key (kbd "M-/") 'hippie-expand)

補完リストを提示する代わりに、バインドされたキーを繰り返し押すと、その場で補完が繰り返されます。

なぜ「ヒッピー」が拡大するのか? 「人生は悪いコードには短すぎる」の記事を読むまで、名前が有益でなく不快だったので、私は実際に関数を見ることを避けました。( Hippie-expand に関する EmacsWiki のエントリでも、「なぜ 'ヒッピー?'」と尋ねられますが、これも答えられません。)

于 2009-01-15T21:28:15.693 に答える
3

私は個人的にオートコンプリートを使用しています。これにより、素敵なドロップダウン ボックスが表示されます。アクティブにする前に入力する文字数を選択し、dabbrev-expand のものを含め、表示する内容をカスタマイズできます。

于 2009-01-16T03:00:07.787 に答える
2
;; Allow tab to autocomplete

 (defun indent-or-expand (arg)
   "Either indent according to mode, or expand the word preceding point."
   (interactive "*P")
   (if (and
        (or (bobp)      (= ?w (char-syntax (char-before))))
        (or (eobp) (not (= ?w (char-syntax (char-after))))))
       (dabbrev-expand arg)
     (tab-to-tab-stop)))

 (defun my-tab-fix ()
   (local-set-key [tab] 'indent-or-expand))

 (add-hook 'as-mode-hook         'my-tab-fix)
 (add-hook 'java-mode-hook       'my-tab-fix)
 (add-hook 'c-mode-hook          'my-tab-fix)
 (add-hook 'sh-mode-hook         'my-tab-fix)
 (add-hook 'emacs-lisp-mode-hook 'my-tab-fix)
于 2009-01-15T21:00:13.520 に答える
0

Aif> これには、「ヒッピーの拡張」が提供する以上のものが必要です。C/C++ をコーディングする場合、ECB http://ecb.sourceforge.net/を使用できますが、率直に言って、プロジェクトは完全に機能せず、このアドオンはあまり信頼できません。本当に優れたインテリジェントな補完が必要な場合は、Eclipse (CDT) を試してください。しかし、Python をコーディングする場合、Emacs (rope + flymake) は Eclipse (PyDev) と同じくらい優れています。

于 2009-03-13T22:15:15.900 に答える
0

問題は、私の意見では、私が試したemacsの補完がコンテキストに関して完了していないということです。

たとえば、メソッド foobar() と引数 foo を使用して OOP を記述した場合、M-/ は foo と foobar の両方を提案します。

ただし、「foo」補完だけを提供するのではなく、オブジェクト メソッドを呼び出している場合はすばらしいでしょう。

誰にも解決策はありますか?

于 2009-01-29T12:40:04.073 に答える