python - Emacs 的 Python 模式比较

标签 python emacs

所以我有 Emacs 24.3,它附带了一个相当新的 python.el 文件,提供了一个 Python 模式进行编辑。

但我一直读到 Launchpad 上有一个 python-mode.el ,比较这两个文件,我发现前者不到 4000 行,而后者将近 20000 行。这表明后者的功能要丰富得多。

而且我找不到任何关于它们的在线功能比较、文档,或者至少是关于它们每个功能的列表。是的,有语法高亮和嵌入式解释器,但是在 shell 缓冲区中完成、在源文件缓冲区中完成、自动缩进、重新缩进等呢?

那么这些模式的重要特点是什么? (或您推荐的任何其他适用于 Emacs 的 Python 模式。)请提供详细答案。

最佳答案

我曾经是 python-mode.el 的用户,但一年前就停止使用它,因为我觉得它的开发方式组织得不好。这是我当时记下的一份 list 。但是我需要提醒你,从那时起已经过去了将近一年,所以情况可能会改变。

  1. 许多复制和粘贴功能。
  2. 许多意外工作的代码。例如,不传递变量而是使用隐式绑定(bind)。这会产生许多编译错误(如果将其更改为词法范围,将无法正常工作)。
  3. 提交的粗略粒度。我发送了一个补丁,并提交了不相关的更改。

我喜欢 python-mode.el 的一点是它带有自动化测试集(尽管我从未运行过它)。 python.el 还没有测试集。但是我知道python.el的作者现在正在写。

虽然 python.el 很紧凑,但这并不意味着您的功能很差。它更像是保持核心小,并通过提供简洁的 API 让其他人扩展它。 python.el 的同一作者写道 python-django.el为 django 项目扩展 python.el。我为 Python 编写了名为 Jedi.el 的自动完成插件。和名为 EIN 的高级 IPython 插件.与 python-mode.el 相比,它们对 python.el 的支持都更好(嗯,那是因为我不使用 python-mode.el)。

我首先从 python-mode.el 中遗漏了一些东西,但它们很快在 python.el 中得到了修复(当然,这可能意味着我没有在 python-mode.el 中使用这么多的功能)。

what about completion in shell buffer, completion in source file buffer, autoindent, reindent etc.

  • 在 shell 缓冲区中完成: 它在 python.el 和 python-mode.el 中都有效。但有时如果 Emacs 版本和 python(-mode).el 版本的组合不好,它就不起作用。所以可能 python.el 以这种方式更安全。 但是,如果您想要更好的解决方案,请使用 EIN :)

  • 在源文件缓冲区中完成: 只需使用 Jedi.el :)

  • 自动缩进/重新缩进: 我不知道哪一个在性能方面更好。但是,用于返回的键绑定(bind)彼此不同。在 python-mode.el 中,如果你输入 RET 你会得到自动缩进。在 python.el 中,RET 不给你缩进,你应该使用 C-j 代替。实际上,换行+缩进的 C-j 是 Emacs 中的通用行为。所以如果你用其他语言编程,python.el 会更好。

关于python - Emacs 的 Python 模式比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15670505/

相关文章:

emacs - 如何通过我的 .emacs 在 emacs 中打开 zone-while-idle?

emacs - 如何在elisp中给出一个列表作为函数的参数?

python - 错误 : "' str' object is not callable"on any use of Xpath

Python Tornado : logging infos

emacs - Emacs ORG 模式如何工作?

emacs - Emacs下Coq/Proof General中关键字和运算符的Unicode字形

python - 如何使用 python 解析 netsh 输出

python - 如何修复这个 python 程序?

python - 使用 lambda 函数作为 dict 值时发生奇怪的覆盖

emacs - 如何将我的自定义 emacs 主题视为 "safe theme"?