Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Emacs的Python模式比较_Python_Emacs - Fatal编程技术网

Emacs的Python模式比较

Emacs的Python模式比较,python,emacs,Python,Emacs,因此,我有Emacs24.3,它附带了一个非常新的python.el文件,提供了一个用于编辑的python模式 但是我一直读到有一个python mode.el打开,比较这两个文件,我发现前者不到4000行,而后者几乎是20000行。这表明后者的功能更加丰富 我找不到任何关于它们的在线功能比较、文档,或者至少是每个功能的列表。是的,有语法高亮显示和嵌入式解释器,但是shell缓冲区中的补全、源文件缓冲区中的补全、自动缩进、reindent等呢 那么这些模式的重要特征是什么?(或您推荐的Emacs

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

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

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


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

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

  • 许多复制和粘贴功能
  • 许多人偶然发现了正在工作的代码。例如,不传递变量,而是使用隐式绑定。这会产生许多编译错误(如果将其更改为词法范围,则将无法工作)
  • 提交的粗粒度。我发送了一个补丁,它被提交了一些不相关的更改
  • 关于python-mode.el,我喜欢的一点是它带有自动测试集(尽管我从未运行过它)。python.el还没有测试集。但是我知道python.el的作者现在正在写它

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

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

    如何在shell缓冲区中完成、在源文件缓冲区中完成、自动缩进、重新缩进等

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

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

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


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

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

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

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

    py向上,py向下-移动嵌套块

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

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

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

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

    • 细粒度零件的概念-
      py表达式
      py次要表达式
    • 运行版本化和并行(I)Python可执行文件的命令,无需重新定义默认Python
    • 在很大程度上消除了对前面标记的活动区域的需要,请参见
      py execute line
      和更多内容
    要获得概述,请查看菜单。目录“doc”列出命令

    随着代码质量的提高:比较两种模式的一种方法可能是检查中列出的bug。例如,见bug#15510、#16875;或

    已经在“提交的粗粒度”上发表了评论:虽然tkf基本上是在寻找较小的片段,但有时条件会让我离开规则。相当多的部分不是手工编写的,而是驻留在目录“devel”中的程序编写的。它们创建用于开发分支First的文件,即python模式下的组件。当启动一个新功能时,如果选择的路径是有效的,通常并不明显。 过了一百年左右,这可能还是不可能的,也不太可取。在这些情况下,我们没有发布所有的曲流,而是将实验分支保留几天,并在测试通过时进行检查


    顺便说一句,假设tkf指的不是编译错误,而是编译器警告。不幸的是,Emacs将关于备份样式首选项的警告与实际错误混为一谈

    LoC不是比较两种模式特征的好方法。一段时间以来,作为Emacs主干的一部分,
    python.el
    可能会更多地使用内置的Emacs API来完成、解释器处理等,而
    python mode.el
    可能会重新发明一些轮子。这就是说,我已经使用
    python.el
    很长时间了,甚至在它成为Emacs的一部分之前,我也没有遗漏任何东西。python-mode.el中的大部分代码都是由菜单执行的,比如[“Execute statement”