如何在Emacs的Elpy中禁用Python代码自动补全及YAsnippet?
禁用Elpy中的YAsnippet及自动补全功能
要解决加载Elpy前elpy-modules未定义的问题,你可以通过两种方式修改配置:
方法一:提前预设elpy-modules变量
直接在custom-set-variables中定义去掉不需要模块的elpy-modules列表,Elpy启动时会自动读取这个自定义值:
(package-initialize) (add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/")) (require 'use-package) (custom-set-variables '(package-selected-packages (quote (elpy python-mode))) ;; 移除yasnippet和自动补全相关的company模块,保留其他核心功能 '(elpy-modules '(elpy-module-eldoc elpy-module-flymake elpy-module-pyvenv elpy-module-django elpy-module-sane-defaults)) ) (use-package elpy :ensure t :defer t :init (advice-add 'python-mode :before 'elpy-enable) )
方法二:在use-package中安全加载Elpy变量定义
通过(require 'elpy nil t)安全加载Elpy的变量定义(不会触发Elpy启用),再修改elpy-modules:
(package-initialize) (add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/")) (require 'use-package) (custom-set-variables '(package-selected-packages (quote (elpy python-mode))) ) (use-package elpy :ensure t :defer t :init ;; 安全加载Elpy变量定义,避免未定义报错 (require 'elpy nil t) ;; 移除yasnippet模块 (delete 'elpy-module-yasnippet elpy-modules) ;; 如果要完全禁用自动补全,再移除company模块 (delete 'elpy-module-company elpy-modules) (advice-add 'python-mode :before 'elpy-enable) )
说明
- 如果你仅想禁用YAsnippet,只需要移除
elpy-module-yasnippet即可; - 若要彻底关闭自动补全功能,还需移除负责补全的
elpy-module-company模块; (require 'elpy nil t)中的nil t表示找不到Elpy包时不报错,同时不执行包的初始化代码,仅加载变量定义。
内容的提问来源于stack exchange,提问作者D Strozzi
相关产品推荐
相关产品推荐

