我正在使用 Emacs python 模式。我在我的中使用它来调用它.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:
然后按回车键,它会正确地将光标放在缩进的换行符中。问题是它没有exit正确退出缩进。在其他系统中,当我在缩进子句的正文中换行时(例如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"?
EDIT:当我以“emacs -nw”运行 emacs 时,我无法让它工作(我正在远程登录到服务器,并且不希望启动 X 界面)。当我删除“-nw”并使用 emacs 时,远程使用较慢的 X 界面,一切正常......知道为什么会这样吗?这可能是与退格键或类似问题相关的 shell 配置问题吗?
如何解决这个问题?如果我在子句中,我只想让它在缩进级别退格。谢谢。