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

时间:2016-06-10 15:31:36

标签: sublimetext3 sublimetext

当我在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点的行尾,然后按'输入'键。我希望我的光标最终会在下一个新添加的行上结束,该行应该缩进8个空格。编辑CLARITY:请注意,此行为源于trim_automatic_white_spaceauto_indent,其默认值为true。如果按'输入'而且,由于某种原因,你的光标不会缩进,这种情况很奇怪。

如果我想向MyAwesomeClass添加一个新方法,我会将光标定位在B点之前,添加一些空白行,然后在空白行上按下'标签'在A点下方的两行。希望该空白行由默认的tabstop(通常为4个空格)缩进,而不是在my_okay_method 范围内的右边足够远。 (当涉及循环或条件时,这会变得非常严重,因为它会进入方法中的最后一个。)

1 个答案:

答案 0 :(得分:0)

我创建了以下keymap,并将其保存到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 }
        ]
    }
]