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

时间:2016-02-16 02:25:32

标签: python ubuntu emacs overwrite

我在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文件中。在普通的文本文件中,我得到了我对覆盖模式的期望。

有没有人对此有解决方法?

更新:我按照下面的安德烈亚斯·罗勒和托马斯的建议进行了跟踪,其中我运行emacs -Q python-mode并且我的问题没有被复制。然后,我将我的~/.emacs文件分成两部分,没有任何内容导致我的问题。

我确实通过卸载和重新安装Emacs 24,尝试新的python模式,最后从~/.emacs.d/elpa/删除新的python模式目录来解决我的问题。我承认这可能不是最好的方法,但现在我的emacs窗口中显示的模式是Python,就像过去一样。

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

2 个答案:

答案 0 :(得分:1)

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

您看到的模式行信息(“py outl”)暗示您正在使用Andreas Röhler's python-mode,据我所知,这不是标准GNU Emacs附带的那个。 (至少当我在Ubuntu 14.04上启动emacs 24.3.1时,我得到了一个不同的模式行。但是,当我下载Röhler的python模式时,我也得到了“py outl”。)注意“outl”部分引用到outline-minor-mode(参见this页面上的第4段)。同样,“ovwrt”部分表示overwrite-mode处于活动状态。

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

答案 1 :(得分:1)

无法重现,覆盖模式可以很好地与当前的python-mode.el一起使用。 假设一些“智能”模式是可以用的。

正如Thomas建议的那样:进入python-mode.el所在的目录:emacs -Q python-mode.el。 M-x评估缓冲区RET加载它。然后再试一次。

请在

处提交错误报告

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

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