1

Клавиша 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 по умолчанию, но лишив контекст

{ "keys": ["tab"], "command": "reindent", "args": {"single_line": false} },

сделал возвышенный повторный отступ всего файла сразу. И я не хочу этого, так как я хочу сохранить пользовательские отступы для heredocs оболочки.

1 ответ1

0

Чтобы табуляция переопределяла текущую строку, когда есть выделение на всех строках в пределах курсора, вам просто нужно сделать:

{ "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 }
    ]
},

Структура контекста

ключ: имя контекста, значение которого вы хотите запросить.

оператор: тип теста, который нужно выполнить против значения ключа. По умолчанию равно.

операнд: результат, возвращаемый ключом, проверяется на соответствие этому значению.

match_all: Требуется, чтобы тест прошел успешно для всех выборов. По умолчанию 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .