首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从python-mode.el切换到python.el

从python-mode.el切换到python.el
EN

Stack Overflow用户
提问于 2008-12-12 11:37:05
回答 6查看 7.5K关注 0票数 31

最近,我尝试从使用python-mode.elpython.el来编辑emacs中的python文件,发现这种体验有点陌生,而且效率低下,于是仓促地返回。我已经使用python-mode.el大约十年了,所以我可能对我的方式有了一点成见。我想听听仔细评估这两种模式的人的意见,特别是他们对每一种模式的利弊,以及他们的工作通常如何与python.el特有的特性相互作用。

对于我来说,python.el的两个主要问题是

  1. 每个访问python文件的缓冲区都有自己的低级交互式python。我习惯于在一个交互式shell中进行开发,并在python文件之间共享数据。(从软件工程的角度来看,这似乎是一种糟糕的实践,但我通常使用的是需要一段时间才能加载到内存中的大型数据集。)
  2. python.el中的骨架模式支持(python的语法使这种自动化变得不必要)和糟糕的设计(例如,它不了解"for“循环生成器表达式或"<expr 1> if <cond> else <expr 2>”表达式,因此您必须返回并删除它在迷你缓冲区中输入表达式后插入的冒号)。我不知道怎么关掉它。有一个python.el变量声称控制了这一点,但它似乎不起作用。可能是我使用的python.el版本被破坏了(它来自debian快照包),所以如果有人知道它的最新版本,我想听听它。(大约两周前,我在CVS emacs中的版本也遇到了同样的问题。)
EN

回答 6

Stack Overflow用户

发布于 2008-12-15 15:34:00

值得注意的是,我没有看到您在问题1中看到的行为,“每个访问python文件的缓冲区都有自己的低级交互式python。”

这就是我使用Emacs22.2中的python.el所做的事情。

插入:打印"foo“

C bar.py插入:打印"bar“

出现C-z *Python*缓冲区。

C-l RET "bar“用*Python*打印

C foo.py RET

C-l RET "foo“被打印在同一个*Python*缓冲区中。

因此,这两个文件共享相同的下位python。在您对python模式的个人自定义与python.el的默认行为之间可能存在一些不可预见的交互。您是否尝试过在不使用python.el自定义的情况下使用.emacs,并检查它的行为方式是否相同?

python.el在python模式上的主要特性是符号完成函数python-完备-符号.你可以添加这样的东西

代码语言:javascript
复制
(define-key inferior-python-mode-map "\C-c\t" 'python-complete-symbol)

然后打字

代码语言:javascript
复制
>>> import os
>>> os.f[C-c TAB]

你会得到一个*完成*缓冲区

代码语言:javascript
复制
Click <mouse-2> on a completion to select it.
In this buffer, type RET to select the completion near point.

Possible completions are:
os.fchdir                          os.fdatasync
os.fdopen                          os.fork
os.forkpty                         os.fpathconf
os.fstat                           os.fstatvfs
os.fsync                           os.ftruncate

它也可以在.py文件缓冲区中工作。

票数 4
EN

Stack Overflow用户

发布于 2010-03-31 15:24:02

  1. 我不能在Emacsv23.1上复制这种行为,这肯定是从那以后改变的。
  2. 忘记任何模式的骨架支持,使用超高级和可扩展的雅斯尼伯代替,它真的值得一试!
票数 3
EN

Stack Overflow用户

发布于 2012-11-07 10:21:47

注意,这里说的几乎所有的东西都是过时的,与此同时,事情发生了变化。

python-mode.el命令以“py”为前缀--基本上,您应该能够使用来自两个命令的命令,这两个命令都是先加载的。

除了重新定义的python-mode.el外,Python-mode.el不卸载python.el。

差异在菜单显示和键设置,但是,最后一个加载将确定。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/362522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档