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了