Emacs配置自动补全:让编码更高效

很多人刚开始用 Emacs 时,总觉得写代码像在“裸奔”——没有提示、没有补全,打个函数名都要靠记忆。其实,只要简单配置一下,Emacs 就能变得聪明起来,输入几个字母,剩下的它帮你补上。

选择合适的补全框架

现代 Emacs 推荐使用 company-mode,它轻量、稳定,支持多种语言。安装方式很简单,在配置文件 ~/.emacs.d/init.el 中加入:

(use-package company
  :ensure t
  :init
  (global-company-mode 1))

如果你还没启用 use-package,也可以手动安装:

(unless (package-installed-p 'company)
  (package-refresh-contents)
  (package-install 'company))

(global-company-mode 1)

让补全更智能:结合 LSP

仅靠文本匹配的补全是不够的。比如你在写 Python,想调用某个类的方法,光靠字符匹配可不行。这时候需要语言服务器协议(LSP)支持。

以 Python 为例,先装 lsp-modelsp-pyright

(use-package lsp-mode
  :ensure t
  :commands (lsp))

(use-package lsp-pyright
  :ensure t
  :hook (python-mode . (lambda ()
                      (require 'lsp-pyright)
                      (lsp))))

保存配置后重启 Emacs,打开一个 .py 文件,它会自动连接语言服务器。这时你输入 str.,马上就能看到所有字符串方法的列表。

优化补全体验

默认的 company-mode 补全需要按 TAB 或上下键触发,有点麻烦。可以设置成输入即显示:

(setq company-idle-delay 0.2)
(setq company-minimum-prefix-length 2)

这样,你一打两个字符,补全框就弹出来了,响应更快。还可以用上下键或 C-n/C-p 来选择候选项。

支持更多语言

不只是 Python,JavaScript、TypeScript、Go、Rust 等主流语言都有对应的 LSP 客户端。比如写 JS 可以用 lsp-mode 配合 lsp-typescript,写 Go 用 lsp-go。只要安装对应包,绑定到语言模式,补全就会自动生效。

比如配置 JavaScript:

(use-package lsp-javascript-typescript
  :ensure t
  :hook (js-mode . lsp))

小技巧:补全也能看文档

把光标停在补全建议上,Emacs 会在 minibuffer 显示简要说明。如果想看完整文档,可以按 C-c C-d 调出详细帮助,这对理解函数参数特别有用。

补全不是花架子,它是减少记忆负担、避免拼写错误的实际工具。就像手机输入法会猜你想说的话,Emacs 的自动补全让你专注逻辑,而不是语法细节。