我从这里下载了一个emacs配置文件:https://github.com/redguardtoo/emacs.d
我安装它并学习使用emacs。
当使用YASnippet时,我发现自动完成的键绑定不起作用。
在编写C代码时,输入“inc”,然后按Tab键,emacs弹出一个菜单选择一个片段。
它只有在按下uparrow和downarrow时才起作用,如果我想选择一个片段,C-n和C-p不起作用。
我发现emacs配置文件具有绑定C-n和C-p。这里是init-auto-complete.elemacs自动完成密钥绑定不起作用
(require 'auto-complete)
(require 'auto-complete-config)
(global-auto-complete-mode t)
(setq ac-auto-start nil)
(setq ac-dwim nil) ; To get pop-ups with docs even if a word is uniquely completed
(define-key ac-completing-map (kbd "C-n") 'ac-next)
(define-key ac-completing-map (kbd "C-p") 'ac-previous)
;;----------------------------------------------------------------------------
;; Use Emacs' built-in TAB completion hooks to trigger AC (Emacs >= 23.2)
;;----------------------------------------------------------------------------
(setq tab-always-indent 'complete) ;; use 'complete when auto-complete is disabled
(add-to-list 'completion-styles 'initials t)
;; hook AC into completion-at-point
(defun set-auto-complete-as-completion-at-point-function()
(setq completion-at-point-functions '(auto-complete)))
(add-hook 'auto-complete-mode-hook 'set-auto-complete-as-completion-at-point-function)
(set-default 'ac-sources
'(ac-source-dictionary
ac-source-words-in-buffer
ac-source-words-in-same-mode-buffers
ac-source-words-in-all-buffer))
(dolist (mode '(magit-log-edit-mode log-edit-mode org-mode text-mode haml-mode
sass-mode yaml-mode csv-mode espresso-mode haskell-mode
html-mode nxml-mode sh-mode smarty-mode clojure-mode
lisp-mode textile-mode markdown-mode tuareg-mode
js3-mode css-mode less-css-mode))
(add-to-list 'ac-modes mode))
;; Exclude very large buffers from dabbrev
(defun sanityinc/dabbrev-friend-buffer (other-buffer)
(< (buffer-size other-buffer) (* 1 1024 1024)))
(setq dabbrev-friend-buffer-function 'sanityinc/dabbrev-friend-buffer)
(provide 'init-auto-complete)
我觉得这两行应该可以工作,但事实并非如此。这让我疯狂。
(定义键AC-完成地图(KBD “道道通”) 'AC-NEXT)
(定义键AC-完成地图(KBD “CP”)' AC-以前)
如何我可以绑定Cn和Cp以在弹出菜单中选择代码片段吗?
它不起作用。但是我发现了一些更有用的C-n和C-p。例如当弹出菜单是“-include ...”和“include ..”时,我可以按“ - ”作为第一个,“i”作为第二个。问题解决了。谢谢! – user1420991