Python模式的Emacs比较

2024-05-29 02:55:40 发布

您现在位置:Python中文网/ 问答频道 /正文

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

但我一直在读到有一个python-mode.elLaunchpad上,比较一下这两个文件,我发现前者在4000行以下,而后者几乎是20000行。这表明后者的功能更加丰富。

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

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


Tags: 文件文档功能编辑列表launchpadmode模式
2条回答

在过去的几年中,我一直忙于开发python-mode.el,我的评论可能有失偏颇:建议Emacs初学者继续使用python.el。它的作者也值得赞扬一些有用的方法。

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

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

支持Python.el目前不知道的Python语言功能:

上下移动嵌套块

避免在点取表单时出现拼写错误,例如子句:

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”目录中的程序编写的。它们首先创建用于开发分支的文件,即组件python模式。当开始一个新特性时,通常不明显选择的路径是否富有成效。 一百次之后,可能还是不可能,也可能不值得推荐。而不是张贴所有的曲流,在这些情况下,用来保持几天的实验分支和检查通过时。

顺便说一下,假设tkf不是指编译错误,而是指编译器警告。不幸的是,Emacs混合了关于支持样式首选项的警告和实际错误。

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

  1. 许多复制粘贴功能。
  2. 许多意外的工作代码。例如,不是传递变量,而是使用隐式绑定。这会产生许多编译错误(如果将其更改为词法范围,则无法工作)。
  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:)

  • 自动缩进/重新缩进: 我不知道哪一个在性能方面更好。但是,返回的keybind各不相同。在python-mode.el中,如果键入RET,则会自动缩进。在python.el中,RET不提供缩进,您应该使用C-j。实际上,newline+缩进的C-j是Emacs中的通用行为。因此,如果使用其他语言编程,python.el会更好。

相关问题 更多 >

    热门问题