Sublime文本仅在字符后自动完成wth tab键

时间:2018-05-08 15:59:22

标签: autocomplete sublimetext3

只有当光标位于字符之后而不是之前,才能将Sublime文本3配置为在单击Tab键时执行自动完成吗?

-done should not be added

我想避免-done完成,我想添加一个标签空间。

1 个答案:

答案 0 :(得分:3)

正如您所经历的那样,ST的默认行为是当插入符号前面只有空格时,“插入最佳完成”。

幸运的是,ST是非常可定制的,我们可以将此行为覆盖到您想要的行为。

为此,请将此添加到您的用户键绑定:

{ "keys": ["tab"], "command": "indent",
    "context":
    [
        { "key": "preceding_text", "operator": "regex_match", "operand": "^\\s*$", "match_all": true },
        { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
        { "key": "following_text", "operator": "not_regex_match", "operand": "^$", "match_all": true },
        { "key": "auto_complete_visible", "operator": "equal", "operand": false },
    ]
},
{ "keys": ["tab"], "command": "insert", "args": { "characters": "\t" },
    "context":
    [
        { "key": "preceding_text", "operator": "regex_match", "operand": "^\\s*$", "match_all": true },
        { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
        { "key": "following_text", "operator": "regex_match", "operand": "^$", "match_all": true },
        { "key": "auto_complete_visible", "operator": "equal", "operand": false },
    ]
},

这告诉ST,当你按 Tab 时,如果满足以下条件,它应该缩进文本: - 没有选择 - 插入符号位于行的开头或仅前面有空格(即缩进) - 插入符号后面(/右侧)有一些文本 - 自动完成弹出窗口不可见

此外,当所有这些条件都为真时,除了插入符号后面的行上有文本时,我们告诉ST插入制表符。注意:如果使用空格进行缩进,ST会将其转换为正确的空格数。

(使用多行选择按 Tab 时缩进的旧行为将保留,当不符合条件时其他默认绑定也将保留。)