Emacs 和 python-mode 自动缩进

Emacs and python-mode automatic indentation

python-mode automatic indentation 做了很多假设,似乎是基于风格。在某些情况下如何配置它的缩进方式,或者让它像 vim.

那样缩进

例如,如果我有以下功能:

def some_function(
    arg1,
    arg2,
):
    pass

如果我转到 arg2 行的末尾,按回车键,然后键入 arg3,,这就是我将得到的结果:

def some_function(
    arg1,
    arg2,
        arg3,
):
    pass

我想要的是:

def some_function(
    arg1,
    arg2,
    arg3,
):
    pass

如何让它做我想做的事?

我已经试过了(setq indent-line-function 'indent-relative),哪种方式可以满足我的要求,除非我按了两次回车键,光标将位于该行的开头(看起来它只检查最后一行来确定相对论)。

在vim中,我可以输入def some_function(回车,它会自动缩进4个空格。如果我输入两次回车,它仍然会缩进 4 个空格。这是我最想要的。

提前致谢!

看起来这解决了我遇到的自动缩进问题。这不是让 emacs 使用 vim 样式缩进的方法。如果我弄明白了,我会把它添加到这个答案中。

(add-hook 'python-mode-hook
          (lambda ()
            (setq python-indent-def-block-scale 1)))