Я новичок в VSCode, и у меня есть постоянная необходимость создавать последовательности обучения на клавиатуре, чего, похоже, нет в VSCode IDE. Следуя советам нескольких сайтов, я получил расширение для marcos и в качестве обходного пути делал пользовательские сочетания клавиш.
Это было довольно сложно, поскольку, по-видимому, единственный основной список команд находится на вкладке «Сочетания клавиш». и, во-вторых, практически нет документации по этим сотням отдельных команд. (В частности, я не смог найти какого-либо главного списка аргументов, принятых каждой командой).
В любом случае, я имел некоторый успех в создании пользовательских комбинаций клавиш, которые я Однако мне нужна одна конкретная проблема, с которой я постоянно сталкиваюсь, заключается в том, что единственный способ, которым я вижу способ вставки заданного c литерального текста, - это команда "type" , однако это, очевидно, действительно делает попробуйте ввести каждый символ и разрешить стиль клавиатуры и т. Д. c. замены авто-огня. Мне это не нужно или не нужно, и мне нужно иметь возможность остановить это или найти какой-то другой (практичный) способ вставки моего литерального текста без любой реинтерпретации, подстановки или других сочетаний клавиш (или любого другого средства делает это).
Вот мой текущий набор команд привязки клавиш:
"EditLitPropToGet": [
{"command": "type", "args": {"text": "get "}},
"cursorWordRight",
"cursorRightSelect",
{"command": "type", "args": {"text": "() { return "}},
"cursorEnd",
"cursorWordStartLeft",
{"command": "type", "args": {"text": "; }"}},
"cursorWordRight",
"cursorWordRight",
"cursorWordStartLeft"
]
Цель этого, когда он расположен в начале первого слова в этой строке:
referenceGravity: this.surfaceGravity * (this.radius**2),
, чтобы затем превратить его в эту строку:
get referenceGravity() { this.surfaceGravity * (this.radius**2); },
Это прекрасно работает, пока не дойдет до второй команды type
:
{"command": "type", "args": {"text": "() { return "}},
До этого запуска строка выглядит следующим образом:
get referenceGravity
: this.surfaceGravity * (this.radius**2),
с выбранным символом двоеточия. Предполагается, что приведенная выше команда type
делает следующее:
get referenceGravity() { return this.surfaceGravity * (this.radius**2),
Но на самом деле происходит следующее:
get referenceGravity() { return }) this.surfaceGravity * (this.radius**2),
Очевидно, это потому, что она видит type
текст как ввод с клавиатуры и вызывает закрытие стилей для "()" и "{}".
Как мне просто вставить буквальный текст?
Чтобы быть понятным, я не смотрю чтобы каждый раз, когда я захочу это сделать, нужно определять собственный фрагмент кода или предварительно загружать буфер вставки, мне нужно, чтобы эти сочетания клавиш были автономными.
Также я не хочу слепо массово отключать все расширения, стили и т. Д. c в начале, если это означает, что я должен вслепую включать их все в конце. Я готов попробовать что-то , например , но если у меня уже есть что-то отключенное, оно не должно включать его повторно, потому что не знает, что ранее было включено / отключено. Если это просто отключить / включить одну указанную настройку c, это нормально, я могу смириться с необходимостью исправления этого при необходимости.
Просто чтобы обновить это, я принял ответ @Mark, потому что он дал решение для этого конкретного случая c. Однако, что касается общего вопроса: « Как я могу вставить буквальный текст? », я считаю, что я наконец-то понял, что говорили люди: вы можете использовать insertSnippet
, чтобы вставить буквальный текст, у вас просто есть чтобы избежать вещей, которые могут рассматриваться как команды Textmate / RegEx ("$
" и "`
" с "\
"). Так что это должно работать:
"EditLitPropToGet": [
{"command": "editor.action.insertSnippet",
"args": {"snippet": "get "}},
"cursorWordRight",
"cursorRightSelect",
{"command": "editor.action.insertSnippet",
"args": {"snippet": "() { return "}},
"cursorEnd",
"cursorWordStartLeft",
{"command": "editor.action.insertSnippet",
"args": {"snippet": "; }"}},
"cursorWordRight",
"cursorWordRight",
"cursorWordStartLeft"
]