Emacs居然有五种Python代码的补全方案: py-complete, pycomplete, ropemacs+auto-complete, anything+ipython, pysmell。本帖将逐一介绍并进行比较。

Emacs的代码补全主要有以下几种选择:

  • py-complete.el (只能用于python-mode.el)
  • python-mode自带的pycomplete(包含一个pycomplete.el和一个pycomplete.py),需要在python端安装pymacs做桥梁 (当然,也只能用于python-mode)
  • ropemacs: 需要在python端安装pymacs,rope,ropemode和ropemacs, 前端一般是用auto-complete
  • pysmell: 需要在python端安装pymacs和pysmell. 这个pysmell也支持vim和textmate
  • 如果你使用ipython做为emacs里面的python shell的话,还可以使用anything-ipython来补全,当然也支持python shell中补全

emacs-for-python 这个all in one的包,采用的是第三种(ropemacs),不过auto-complete的即时触发性能上不是太好,也很影响编辑。

不过,除了上面这些专用的补全,其它的手段还有:

  • abbrev-expand 根据自行定义的缩略语展开
  • dabbrev-expand 根据Emacs中其它buffer的内容匹配补全
  • yasnippets 模板
  • 我写的auto-complete-scite-api :-) 最新的0.2.2支持python.api了