Выполняя режим описания M-x в файле .el, я заметил, что режим Emacs-Lisp фактически выполняет завершение кода. Однако lisp-complete-symbol
привязан к M-TAB. В Windows эта привязка клавиш используется Windows для переключения активного окна. Большинство IDE используют C-SPC, но это также используется в Emacs. Что такое хорошая, довольно распространенная привязка клавиш для завершения кода?
Привязки клавиш автозавершения кода в Emacs
Ответы (6)
Если вам нравится завершение всех видов, я рекомендую M-/ и привязать его к hippie -развернуть.
(global-set-key (kbd "M-/") 'hippie-expand)
Он выполняет множество дополнений, которые контролируются переменной hippie-expand-try-functions-list
. В файлах .el вы можете установить это, чтобы сначала выполнить 'try-complete-lisp-symbol
, чтобы получить поведение, о котором вы просите выше, наряду со всеми другими расширениями, которые предоставляет hippie-expand.
Это сделает это для вас:
(add-hook 'emacs-lisp-mode-hook 'move-lisp-completion-to-front)
(defun move-lisp-completion-to-front ()
"Adjust hippie-expand-try-functions-list to have lisp completion at the front."
(make-local-variable 'hippie-expand-try-functions-list)
(setq hippie-expand-try-functions-list
(cons 'try-complete-lisp-symbol
(delq 'try-complete-lisp-symbol hippie-expand-try-functions-list)))
(setq hippie-expand-try-functions-list
(cons 'try-complete-lisp-symbol-partially
(delq 'try-complete-lisp-symbol-partially hippie-expand-try-functions-list))))
M-/
— это привязка по умолчанию для dabbrev
(заменой которой является hippe-expand). Также M-SPC
по умолчанию привязан к 'just-one-space
, который я использую все время. И, наконец, холодильник создается с помощью тега ‹kbd›KEY‹/kbd›.
- person Trey Jackson; 28.01.2010
(cons 'a (cons 'b (delq 'a (delq 'b list))))
- person jrockway; 28.01.2010
M-/
также является привязкой, рекомендованной GNU : обычно хиппи-расширение связывается с M-/
с помощью dabbrev-expand
, стандартной привязки M-/
, что обеспечивает одну из возможностей расширения.
- person user650654; 22.08.2019
Как упомянул Трей Джексон, hippie-expand
— это то, что нужно, но наряду с привязкой его к M-/ мне также нравится, когда клавиша TAB выполняет всю мою завершающую работу за меня. . Итак, у меня есть это из Emacs-Wiki в моем файле .emacs:
;;function to implement a smarter TAB (EmacsWiki)
(defun smart-tab ()
"This smart tab is minibuffer compliant: it acts as usual in
the minibuffer. Else, if mark is active, indents region. Else if
point is at the end of a symbol, expands it. Else indents the
current line."
(interactive)
(if (minibufferp)
(unless (minibuffer-complete)
(hippie-expand nil))
(if mark-active
(indent-region (region-beginning)
(region-end))
(if (looking-at "\\_>")
(hippie-expand nil)
(indent-for-tab-command)))))
(global-set-key (kbd "TAB") 'smart-tab)
Вы можете расширить настройки хиппи следующим образом:
;;settings for hippie-expand
(setq hippie-expand-try-functions-list
'(try-complete-lisp-symbol
try-complete-lisp-symbol-partially
try-expand-dabbrev
try-expand-dabbrev-from-kill
try-expand-dabbrev-all-buffers
try-expand-line
try-complete-file-name-partially
try-complete-file-name))
C-M-i; не требуется настройка.
Я использую:
(define-key function-key-map [(control tab)] [?\M-\t])
Я использую M-.
и M-/
для двух режимов завершения - хиппи-расширения и стандартного emacs.
Поместите это в свой .emacs
, чтобы Windows предоставила Emacs использование M-TAB
:
(when (fboundp 'w32-register-hot-key) (w32-register-hot-key [M-tab]))
ESC TAB
. - person Aidan Cully   schedule 27.01.2010