如何阻止 Sublime Text 缩进多个制表位?

How to stop Sublime Text from indenting by multiple tab stops?

当我在 Sublime Text 中有一个缩进的文本块,并且它下面有空行时,按 Tab 键将缩进到该块的级别。

每次发生这种情况仍然让我感到惊讶,所以我想将其关闭。我想手动将空行缩进到所需的级别。目前,我经常需要按一次 Tab 键,然后按退格键几次,具体取决于前面方法的嵌套深度。

到目前为止,我已尝试将 auto_indent 设置为 false。这确实会停止行为......以及与自动缩进相关的所有其他内容。我想要更有针对性的东西。

我也试过将 smart_indent 设置为 false。到目前为止,这对我尝试过的案例没有影响;它仍然缩进多个制表位。

正在尝试整理示例案例。代码的质量并不重要,几何形状才重要。

class MyAwesomeClass:

    def my_okay_method(self):
        print(self)  # point A

# point B

假装没有评论,评论仅供参考。

如果我想添加 my_okay_method 的行为,我会将光标放在行尾的 A 点,然后按 'enter' 键。我希望我的光标结束在下一个新添加的行上,该行应该缩进 8 个空格。编辑清晰:请注意,此行为源于 trim_automatic_white_spaceauto_indent 的默认值 true。如果您按 'enter' 并且出于某种原因,您的光标最终没有缩进,则说明发生了一些奇怪的事情。

如果我想向 MyAwesomeClass 添加一个新方法,我会将光标放在 B 点之前,添加一些空行,然后在 A 点下方两行的空行上按 'tab'。我会就像那个空行被默认的制表位(通常是 4 个空格)缩进,而不是 向右缩进到 my_okay_method 的范围内。 (当涉及循环或条件时,这会变得非常严重,因为它会进入方法中的最后一个。)

我创建了以下键盘映射,并将其保存到 User/Default.sublime-keymap。到目前为止,它似乎完全符合我的要求。

编辑:我将其更改为专门禁用默认键盘映射中的相关映射。

[
    { "keys": ["tab"], "command": "insert", "args": {"characters": "\t"}, "context":
        [
            { "key": "setting.auto_indent", "operator": "equal", "operand": true },
            { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
            { "key": "preceding_text", "operator": "regex_match", "operand": "^$", "match_all": true },
            { "key": "following_text", "operator": "regex_match", "operand": "^$", "match_all": true }
        ]
    }
]