Emacs与Python

34 投票
3 回答
10910 浏览
提问于 2025-04-11 09:21

我最近开始学习Emacs。我已经看过教程,读了一些入门文章,到目前为止一切都还不错。

现在我想用它来进行Python开发。根据我的理解,Emacs有两个不同的Python模式:一个是python-mode.el,它是Python项目的一部分;另一个是python.el,它是Emacs 22的一部分。

我查阅了所有能找到的信息,但大部分看起来都比较过时,我还是有点困惑。

我有几个问题:

  1. 这两者有什么区别?
  2. 我应该安装哪个模式来使用?
  3. 还有其他对Python开发很重要的Emacs插件吗?

相关链接:

3 个回答

7

考虑到我有很多打开的文件都叫做 __init__.py,我觉得 uniquify 这个工具对Python开发来说非常重要。

另外,Pyflakes 也能提高工作效率。

8

这个网站上有关于如何在Emacs中实现Python代码自动补全的介绍。Ropemacs是让Rope在Emacs中工作的一个方法。我对这两者的使用经验不算丰富,但它们值得一试。

21

如果你在用GNU Emacs 21或更早的版本,或者用XEmacs,那就要用python-mode.el。GNU Emacs 22的python.el在这些版本上是用不了的。在GNU Emacs 22上,python.el可以正常工作,而且和GNU Emacs自己的一些功能,比如符号解析和自动补全、ElDoc等,结合得更好。我自己用的是XEmacs,所以不太用这个。不过我听说以前有人抱怨它用起来不太顺畅,但现在有一些更新可以解决这些问题(比如你链接的emacswiki页面上),希望现在已经有一些更新整合进去了。如果我是GNU Emacs的用户,我会先用python.el,直到我找到特别的理由不这样做。

根据我看到的,python-mode.el最大的问题就是它对三重引号字符串的理解不太到位。它把三重引号当成单引号来处理,这样在三重引号字符串里面如果有单引号,就会导致语法高亮出错:它会认为字符串在那儿就结束了。你可能还需要修改你的auto-mode-alist,让.py文件能自动使用python-mode;我不记得现在是不是这样,但我的init.el已经设置这个很多年了。

至于其他的插件,我觉得没有什么是“必不可少”的。XEmacs的func-menu有时候挺有用的,它会给你当前文件的小功能/类浏览菜单。我不记得GNU Emacs有没有类似的功能。我有一个rst-mode,用来编辑reStructuredText,因为在一些项目中会用到。如果你用版本控制工具,和它结合起来可能会对你有帮助,不过大部分工具都有内置支持,其他的也可以很容易下载.el文件。

撰写回答