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

标签 python emacs editing

我最近尝试从使用 python-mode.el 切换至python.el在 emacs 中编辑 python 文件时,发现这种体验有点陌生和低效,于是匆忙返回。我一直在使用python-mode.el大约十年了,所以也许我的方式有点固定。我很想听听任何仔细评估过这两种模式的人的意见,特别是他们对每种模式的看法,以及他们的工作通常如何与 python.el 特有的功能相互作用。 .

python.el 对我来说有两个主要问题是

  1. 每个访问 python 文件的缓冲区都有自己的劣质交互式 python shell。我习惯于在一个交互式 shell 中进行开发并在 python 文件之间共享数据。 (从软件工程的角度来看,这似乎是一种不好的做法,但我通常使用大量数据集,这些数据集需要一段时间才能加载到内存中。)

  2. python.el 中的骨架模式支持,看起来完全是免费的(python 的语法使得这种自动化变得不必要)并且设计糟糕(例如,它不知道“for”循环生成器表达式或“<expr 1> if <cond> else <expr 2> "表达式,所以在坚持在小缓冲区中输入表达式子句之后,您必须返回并删除它有用地插入的冒号。)我不知道如何将其关闭。有一个 python.el声称可以控制这一点的变量,但它似乎不起作用。可能是 python.el 的版本我使用的是损坏的(它来自 debian emacs-snapshot 包)所以如果有人知道它的最新版本,我想听听它。 (大约两周前,我在 CVS emacs 中的版本遇到了同样的问题。)

最佳答案

对于它的值(value),我没有看到您在问题 #1 中看到的行为,“每个访问 python 文件的缓冲区都有自己的劣质交互式 python shell。”

这是我使用 Emacs 22.2 中的 python.el 所做的。

C-x C-f foo.py [插入:打印“foo”]

C-x C-f bar.py [插入:打印“条”]

C-c C-z [*Python* 缓冲区出现]

C-x o

C-c C-l RET ["bar"在 *Python* 中打印]

C-x b foo.py RET

C-c C-l RET ["foo"打印在同一个 *Python* 缓冲区中]

因此,这两个文件共享相同的劣质 python shell。也许在您对 python-mode 的个人定制和 python.el 的默认行为之间存在一些无法预料的交互。您是否尝试过在没有 .emacs 自定义的情况下使用 python.el 并检查其行为是否相同?

python.el 相对于 python-mode 的主要新增功能是符号补全函数 python-complete-symbol。你可以添加这样的东西

(define-key inferior-python-mode-map "\C-c\t" 'python-complete-symbol)

然后输入

>>> import os
>>> os.f[C-c TAB]

你会得到一个 *Completions* 缓冲区,其中包含

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 文件缓冲区中工作。

关于python - 从 python-mode.el 切换到 python.el,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/362522/

相关文章:

jqgrid - 仅在客户端上使用模态形式向 jqGrid 添加新行

wordpress - 用于页面编辑的最佳 WordPress 插件?

python - 如何用python/django实现restful webservice

linux - 从 Linux 通过 SSH 连接到 Mac OS X(使用 XForwarding)时如何运行 Emacs?

windows - sh.exe": emacs: command not found (Git bash Windows)

linux - 如何从 emacs 中实际更改/设置环境变量

vim 行号 - 如何默认启用它们?

python - 从字符串列表中查找最常见的单词

python - Python XPATH Selenium 元素没有可见文本结果

python - 平滑跳过不同的 FPS