Emacs24 中的覆盖行为 Python 大纲覆盖模式

Overwrite Behavior in Emacs24 Python Outline Overwrite Mode

我在 ubuntu 14.04 上使用 emacs24 编写一些 python 代码。我最近从 ubuntu 12.04 和 emacs23 升级,似乎 emacs 中新的 python 模式称为 "py outl"。我已尝试研究此模式,但找不到我的特定问题。

我想使用 "py outl ovwrt" 模式覆盖我的代码中的一些值(我只是按下了插入键)。但是,在此模式下键入替换值时,emacs 的行为会变得非常糟糕。

假设我有:

y = 'abcdefghij'

并使用覆盖我想将其更改为:

y = '12345fghij'

实际发生的是我得到:

y = '1b2d3f4h5j'

我只是按顺序输入数字,并没有自己移动光标。 Emacs 每次都将光标移到一个额外的字符上。也许在这个新的 python 模式中会出现这种行为,但这不是我习惯的,也不是我想要它做的。 emacs 这样做有什么特别的原因吗?它只发生在 *.py 文件中。在普通文本文件中,我得到了我期望的覆盖模式。

有人解决这个问题吗?

更新: 我遵循了下面 Andreas Röhler 和 Thomas 的建议,运行 emacs -Q python-mode 我的问题没有重现。然后我将我的 ~/.emacs 文件一分为二,没有任何问题导致我的问题。

我确实通过卸载和重新安装 Emacs 24、尝试新的 python 模式、最后从~/.emacs.d/elpa/。我承认这可能不是解决问题的最佳方法,但现在在我的 emacs window 中显示的模式与过去一样是 Python

不幸的是,这意味着我仍然不确定到底是什么导致了我的问题,尽管我怀疑这可能与我从 ubuntu 12.04 升级到 14.04 有关。

我无法重现您观察到的行为。

您看到的模式行信息 ("py outl") 暗示您正在使用 Andreas Röhler's python-mode which as far as I know is not the one that is shipped with standard GNU Emacs. (At least when I start emacs 24.3.1 on Ubuntu 14.04, I get a different mode-line. However, when I download Röhler's python mode, I do get "py outl" as well.) Note that the "outl" part refers to outline-minor-mode (see paragraph 4 on this page). Similarly, the "ovwrt" part indicates that overwrite-mode 处于活动状态。

我建议您使用 -Q 选项启动 emacs 以检查该行为是否仍然存在。如果不是,那么您的配置中的某些内容可能会导致您看到的效果。 Bisecting your ~/.emacs file 是找到肇事者的一种方法。

无法重现,覆盖模式适用于当前 python-mode.el。 假设一些 "smart"-mode 是 cupable.

正如 Thomas 所建议的:进入 python-mode.el 所在的目录:emacs -Q python-mode.el。 M-x evaluate-buffer RET 加载它。然后重试。

请在

提交错误报告

https://gitlab.com/groups/python-mode-devs/issues

https://bugs.launchpad.net/python-mode