Emacs的Python模式比较

时间:2013-03-27 22:10:59

标签: python emacs

所以我有Emacs 24.3,并附带了一个非常新的python.el文件,提供了一个用于编辑的Python模式。

但我一直在阅读Launchpad上有一个python-mode.el,并且比较两个文件,它向我跳出前者不到4000行,而后者几乎是20000。这表明后者的功能更丰富。

我找不到关于它们的任何在线功能比较,文档或至少有关每个功能的列表。是的,有语法高亮和嵌入式解释器,但是在shell缓冲区中完成,在源文件缓冲区中完成,autoindent,reindent等等。

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

2 个答案:

答案 0 :(得分:21)

我曾经是python-mode.el用户,但一年前就退出了,因为我觉得它的开发方式并不是很好。这是我当时的笔记列表。但是我需要警告你,从那以后差不多一年了,所以情况可能会改变。

  1. 许多副本&粘贴功能。
  2. 许多意外工作的代码。例如,不使用隐式绑定传递变量。这会产生许多编译错误(如果将其更改为词法范围,则无效)。
  3. 粗略的提交粒度。我发送了一个补丁,它被提交了无关的更改。
  4. 我喜欢python-mode.el的一件事是它带有自动测试装置(尽管我从未运行过它)。 python.el还没有测试集。但我知道python.el的作者现在正在写它。

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

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

      

    如何在shell缓冲区中完成,在源文件缓冲区,autoindent,reindent等中完成。

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

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

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

答案 1 :(得分:6)

去年大量参与开发python-mode.el,我的评论可能有偏见:建议继续使用python.el为Emacs初学者。其作者也值得赞扬一些有用的方法。

python-mode.el旨在提高编辑效率。它使得通过python2和python3或IPython shell并行运行或执行变得容易。

它减少了提供定制命令所需的击键次数。它使编辑更快,通过语音,宏驱动输入等帮助编程。

支持目前python.el中未知的Python语言功能:

py-up,py-down - 移动嵌套块

避免使用拼写错误提取表单,例如:

py-backward-clause
py-copy-clause
py-down-clause

...

测试不同版本时无需自定义:

py-execute-clause-python2
py-execute-clause-python3
py-execute-clause-ipython

...

  • 细粒度部分的概念 - py-expressionpy-minor-expression
  • 命令运行版本化和并行(I)Python可执行文件,无需重新定义默认Python
  • 在很大程度上消除了之前标记的活动区域的需求,请参阅py-execute-line以及更多

要了解概述,请查看菜单。目录“doc”列出了命令。

随着代码质量的提高:比较两种模式的方法可能是检查http://debbugs.gnu.org/中列出的错误。例如,参见bug#15510,#16875;或http://lists.gnu.org/archive/html/help-gnu-emacs/2014-04/msg00250.html

已经在“粗略的提交粒度”评论:虽然tkf基本上正在寻找较小的片段,但有时条件会让我离开规则。相当多的部分不是手工编写的,而是由位于“devel”目录中的程序编写的。他们创建在开发分支frist中使用的文件 - 即components-python-mode。当开始一个新功能时,选择的路径是否富有成效往往并不明显。 在一百个即将提交之后,它仍然可能变得不可能或不那么值得推荐。而不是发布所有曲折,用于在这些情况下将实验分支保留数天并在测试通过时检入。

BTW假设tkf不是指编译错误 - 它会立即查找 - 而是编译器警告。不幸的是,Emacs混合了关于支持的样式首选项的警告和真实错误。