python-mode缩进在按Enter键时不起作用

时间:2013-08-15 21:06:26

标签: python emacs python-mode

我刚刚从ELPA安装了python-mode,当我点击 Enter 时,光标直接进入下一行的开头。例如,对于以下代码:

def hello_world():
    print "hello world!"
    for i in range(3):
        print "hello again"
    return 0

每次点击 Enter 进入新行后,我必须在 Enter 后点击 TAB (尽管有趣的是 TAB 将光标发送到正确的位置。)

当我安装python-mode时,我收到了一些与缩进有关的警告信息,我并不理解,here is a link to those warning messages

3 个答案:

答案 0 :(得分:4)

C-j 是我正在寻找的关键('newline-and-indent'命令)。我设法通过在我的init.el中添加以下钩子来重新绑定 Enter

(add-hook 'python-mode-hook
          (lambda ()
             (define-key python-mode-map "\r" 'newline-and-indent)))

答案 1 :(得分:3)

不确定为什么安装了python-mode,因为Emacs内置了Python支持,但我不认为这会影响其余部分。如果你希望RET在插入换行符后缩进,你可能在任何地方都喜欢它,所以你可能想要启用electric-indent-mode

答案 2 :(得分:2)

尝试使用 C-j 而不是输入

实际上, Cj 绑定到(newline-and-indent),它执行问题中提到的两个步骤( enter tab

从版本24.4.50.1开始,默认行为已被撤销,即 enter 添加换行符和缩进符号(如果需要),而 C-j 则不行。虽然这些键绑定映射到的功能不是如上所述。