Vim的按Ctrl +ñ一般這樣工作的:我輸入幾個字母,撞按Ctrl +ñ,和Vim提供我根據我在所有打開的緩衝區單詞補全。如何在GNU Emacs中完成Vim的Ctrl-n等價物?
Emacs的解決方案不一定是相同的。我主要像這樣使用它:聲明變量,然後在後面的代碼中使用它。但我喜歡的輕量級方法,而不是解析源代碼的。
Vim的按Ctrl +ñ一般這樣工作的:我輸入幾個字母,撞按Ctrl +ñ,和Vim提供我根據我在所有打開的緩衝區單詞補全。如何在GNU Emacs中完成Vim的Ctrl-n等價物?
Emacs的解決方案不一定是相同的。我主要像這樣使用它:聲明變量,然後在後面的代碼中使用它。但我喜歡的輕量級方法,而不是解析源代碼的。
我個人使用AutoComplete它給你一個很好的下拉框。您可以在激活並自定義您想要顯示的內容之前選擇要輸入的字母數,包括dabbrev-expand中的內容。
;; 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)
試嬉皮擴大,勢必會你最喜歡的關鍵
(global-set-key (kbd "M-/") 'hippie-expand)
而是呈現完成列表,通過就地完井多次擊中束縛關鍵週期。
爲什麼「嬉皮」擴展?我不知道,實際上我避免看這個功能,因爲這個名字沒有信息,並且是令人厭惡的,直到我讀the write-up at 'Life Is Too Short For Bad Code'.(EmacsWiki entry on hippie-expand也問「爲什麼'嬉皮?'」,但是也不能回答。)
這個問題在我看來是我試過的emacs完成並沒有完成上下文。例如,如果你用方法foobar()和參數foo編寫一些OOP,M- /會建議你foo和foobar。
但是如果你正在調用一個對象方法,而不是僅僅提供「foo」完成,那就太好了。
有沒有人有解決方案?
Aif>這比「嬉皮擴展」所提供的要多得多。如果你編寫C/C++,你可以使用ECB http://ecb.sourceforge.net/,但坦率地說,這個項目已經死了,這個插件不是很可靠。如果你需要真正的智能完成,你應該嘗試Eclipse(CDT)。但是如果你編碼Python,那麼Emacs(rope + flymake)就像Eclipse(PyDev)一樣好。
不錯的提示,不知道Ctrl-n! – 2009-01-15 20:58:23