Emacs 和 python 模式自动缩进

syn*_*nic 4 emacs spacemacs

python 模式自动缩进似乎基于样式做出了很多假设。如何配置在某些情况下缩进的方式,或者使其像 vim 一样缩进。

例如,如果我有以下函数:

def some_function(
    arg1,
    arg2,
):
    pass
Run Code Online (Sandbox Code Playgroud)

如果我转到行尾arg2,按 Enter 键,然后输入arg3,,这就是我将得到的内容:

def some_function(
    arg1,
    arg2,
        arg3,
):
    pass
Run Code Online (Sandbox Code Playgroud)

我想要的是:

def some_function(
    arg1,
    arg2,
    arg3,
):
    pass
Run Code Online (Sandbox Code Playgroud)

我怎样才能让它做我想做的事呢?

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

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

提前致谢!

syn*_*nic 5

看起来这解决了我遇到的自动缩进问题。这不是让 emacs 使用 vim 风格缩进的方法。如果我弄清楚了,我会将其添加到这个答案中。

(add-hook 'python-mode-hook
          (lambda ()
            (setq python-indent-def-block-scale 1)))
Run Code Online (Sandbox Code Playgroud)