TAB 键默认只是放置一个制表符,并且仅根据几个上下文进行缩进,对此我不太理解。
{ "keys": ["tab"], "command": "reindent", "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 }
]
},
我想reindent
默认设置 tab,但删除上下文
{ "keys": ["tab"], "command": "reindent", "args": {"single_line": false} },
让 sublime 一次性重新缩进整个文件。我不想这样做,因为我想保留 shell heredocs 的自定义缩进。
答案1
要使在光标内的所有行都有选择时按 Tab 键重新缩进当前行,您只需执行以下操作:
{ "keys": ["tab"], "command": "indent", "context":
[
{ "key": "selection_empty", "operator": "equal", "operand": false, "match_all": false }
]
},
{ "keys": ["tab"], "command": "insert_best_completion", "args": {"default": "\t", "exact": true}, "context":
[
{ "key": "selection_empty", "operator": "equal", "operand": true, "match_all": false }
]
},
上下文结构
钥匙:需要查询其值的上下文的名称。
操作员:针对键值执行的测试类型。默认为相等。
操作数:根据该值测试通过 key 返回的结果。
全部匹配:要求所有选择都通过测试。默认为 false。
http://docs.sublimetext.info/en/latest/reference/key_bindings.html#structure-of-a-context http://docs.sublimetext.info/en/latest/reference/key_bindings.html#context-operands