我正在使用Emacs python-mode。我在我的.emacs
(add-to-list 'load-path "~/emacs/python-mode.el-6.0.3/")
(autoload 'python-mode "python-mode" "Python Mode." t)
(add-to-list 'auto-mode-alist '("\\.py\\'" . python-mode))
(add-to-list 'interpreter-mode-alist '("python" . python-mode))
(require 'python-mode)
(add-hook 'python-mode-hook
(lambda ()
(set-variable 'py-indent-offset 4)
;(set-variable 'py-smart-indentation nil)
(set-variable 'indent-tabs-mode nil)
(define-key py-mode-map (kbd "RET") 'newline-and-indent)
;(define-key py-mode-map [tab] 'yas/expand)
;(setq yas/after-exit-snippet-hook 'indent-according-to-mode)
))
它通常会缩进,因为如果我写了:
if condition:
然后按下Return键,它会正确地将光标放在缩进的换行符中。问题是它没有正确退出退出。在其他系统中,当我在缩进子句的主体中创建一个新行(如if
语句主体)并按Backspace时,它会在缩进中跳出一个级别,而不是退格。例如,如果我有:
if condition:
statement1
statement2
我在statement2
之后按了返回,退格键,它会将光标放在这里:
if condition:
statement1
statement2
<-- cursor position
如果你有许多想法的级别并且它没有这样做,那么编辑Python变得不可能,因为你必须手动退格,直到你达到正确的缩进级别......它容易出错并且很烦人,例如如果你有:
for something:
for other:
if hello:
while x:
statement1
<-- How to indent back to level of "for other"?
编辑:我将emacs作为“emacs -nw”运行时无法正常工作(我远程登录服务器并且不想启动X界面)。当我删除“-nw”并使用emacs时,远程使用较慢的X界面,一切正常......任何想法为什么会这样?它可能是与退格有关的shell配置问题吗?
如何解决这个问题?如果我在一个子句中,我只想让它在缩进级别退格。感谢。
答案 0 :(得分:5)
对于现代版本的Emacs,use python.el, not python-mode.el。 如果从.emacs中删除所有这些行,我认为默认情况下将启用python.el,并且当您打开.py文件时将获得Python模式。
我测试了系统上的空白默认设置,并且退格正确地返回到示例中的一级缩进。
所以答案似乎是“什么都不做!” :)
在Ubuntu上,python.el由emacs23-common软件包提供,它是标准emacs安装的一部分:
% dpkg -S /usr/share/emacs/23.3/lisp/progmodes/python.elc
emacs23-common: /usr/share/emacs/23.3/lisp/progmodes/python.elc
答案 1 :(得分:1)
我的猜测是python-mode.el不支持具有不同的缩进宽度。您的上一个示例使用2 和 3个空格进行缩进。为什么不总是每个缩进使用4个空格?使用4个空格是standard style。
编辑:当我打开一个新文件并复制你的上一个例子时,我可以重现你说的话。但是,当我关闭它并重新打开它时,我可以正确退出缩进。我可以通过选择代码并点击C-c :
(py-guess-indent-offset)而不关闭/重新打开来做同样的事情。
答案 2 :(得分:1)
这是一个错误。
py-smart-indentation最近错误地猜测了4的值。
要快速修复问题,请在以下位置报告python-mode.el错误:
答案 3 :(得分:1)
而不是退格,只需按<tab>
即可。它应该跳转到下一个逻辑缩进位置。
答案 4 :(得分:0)
已修复当前主干
使用集市获取它:
bzr branch lp:python-mode
或通过html download-button
https://launchpad.net/python-mode RESP。 http://bazaar.launchpad.net/~python-mode-devs/python-mode/python-mode/files