我刚刚从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。
答案 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 则不行。虽然这些键绑定映射到的功能不是如上所述。