最近,我尝试从使用python-mode.el到python.el来编辑emacs中的python文件,发现这种体验有点陌生,而且效率低下,于是仓促地返回。我已经使用python-mode.el大约十年了,所以我可能对我的方式有了一点成见。我想听听仔细评估这两种模式的人的意见,特别是他们对每一种模式的利弊,以及他们的工作通常如何与python.el特有的特性相互作用。
对于我来说,python.el的两个主要问题是
for“循环生成器表达式或"<expr 1> if <cond> else <expr 2>”表达式,因此您必须返回并删除它在迷你缓冲区中输入表达式后插入的冒号)。我不知道怎么关掉它。有一个python.el变量声称控制了这一点,但它似乎不起作用。可能是我使用的python.el版本被破坏了(它来自debian快照包),所以如果有人知道它的最新版本,我想听听它。(大约两周前,我在CVS emacs中的版本也遇到了同样的问题。)发布于 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-完备-符号.你可以添加这样的东西
(define-key inferior-python-mode-map "\C-c\t" 'python-complete-symbol)然后打字
>>> import os
>>> os.f[C-c TAB]你会得到一个*完成*缓冲区
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文件缓冲区中工作。
发布于 2010-03-31 15:24:02
发布于 2012-11-07 10:21:47
注意,这里说的几乎所有的东西都是过时的,与此同时,事情发生了变化。
python-mode.el命令以“py”为前缀--基本上,您应该能够使用来自两个命令的命令,这两个命令都是先加载的。
除了重新定义的python-mode.el外,Python-mode.el不卸载python.el。
差异在菜单显示和键设置,但是,最后一个加载将确定。
https://stackoverflow.com/questions/362522
复制相似问题