我在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有关。
答案 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
或