Фрагмент VSCode: Как также установить тип файла?
Я создал фрагмент для быстрого запуска чистого реагирующего компонента:
{"new React Pure": {
"prefix": "reactpure",
"body": [
"import React from 'react';",
"import PropTypes from 'prop-types';",
"import './${1:ComponentName}.module.css';",
"const ${1:ComponentName} = ({ ${2:propValue=[] } }) => (",
"<${3:rootelement}>${4:content}</${3:rootelement}>",
")",
"${1:ComponentName}.propTypes = {",
"${5:propValue}: PropTypes.string",
"};",
"export default ${1:ComponentName};",
"$0"
],
"description": "Create a react pure component"
}
Это отлично работает. Но моя проблема в том, что мне нужно установить / изменить тип файла с plaintext
в javascriptreact
каждый раз, когда я создаю новый компонент, чтобы увидеть цветную тему и другие автозаполнения для работы. Есть ли способ установить тип файла любого пустого файла, если я использовал какой-то конкретный фрагмент?
Я понимаю, что фрагменты кода обычно используются для выполнения небольших задач, когда файл уже создан. Но сейчас я широко использую эти фрагменты.
1 ответ
Одна вещь, которую вы можете сделать, это установить языковой режим по умолчанию для новых файлов:
"files.defaultLanguage": "javascriptreact",
В противном случае есть хакерский способ, который работает хорошо. Вам понадобится расширение макроса, например, multiCommand.
Вот ваш макрос, который идет в ваших настройках:
{
"command": "multiCommand.languageMode",
"sequence": [
// make a new untitled file - you may or may not want this
"workbench.action.files.newUntitledFile",
{
"command": "editor.action.insertSnippet",
"args": {
"name": "new React Pure"
}
},
"workbench.action.editor.changeLanguageMode",
"workbench.action.quickOpenNavigateNext",
"workbench.action.quickOpenNavigateNext",
"workbench.action.quickOpenNavigateNext",
"workbench.action.quickOpenNavigateNext",
"workbench.action.quickOpenNavigateNext",
"workbench.action.quickOpenNavigateNext",
"workbench.action.quickOpenNavigateNext",
"workbench.action.quickOpenNavigateNext",
"workbench.action.quickOpenNavigateNext",
"workbench.action.quickOpenNavigateNext",
"workbench.action.quickOpenNavigateNext",
"workbench.action.quickOpenNavigateNext",
"workbench.action.quickOpenNavigateNext",
"workbench.action.quickOpenNavigateNext",
"workbench.action.quickOpenNavigateNext",
"workbench.action.quickOpenNavigateNext",
"workbench.action.quickOpenNavigateNext",
"workbench.action.quickOpenNavigateNext",
"workbench.action.quickOpenNavigateNext",
"workbench.action.quickOpenNavigateNext",
"workbench.action.quickOpenNavigateNext",
"workbench.action.quickOpenNavigateNext",
"workbench.action.quickOpenNavigateNext",
"workbench.action.quickOpenNavigateNext",
"workbench.action.quickOpenNavigateNext",
"workbench.action.quickOpenNavigateNext",
"workbench.action.quickOpenNavigateNext",
"workbench.action.acceptSelectedQuickOpenItem"
]
},
Есть 27 quickOpenNavigateNext
основано на том, как далеко вниз в панели быстрого выбора языкового режима я должен прокрутить, чтобы добраться до javascriptreact
, Ваш пробег может отличаться, если вы добавили языковые режимы по умолчанию.
Сначала этот макрос вставляет "new React Pure"
фрагмент вашего вопроса.
Затем свяжите этот макрос с какой-нибудь цепочкой клавиш и активируйте ее. Он создаст новый файл без названия, установит его языковой режим "javascriptreact"
и введите готовый к редактированию фрагмент кода реакции.
{
"key": "ctrl+shift+/",
"command": "multiCommand.languageMode",
},
Это немного болезненно, но я не знаю, как программно обеспечить ввод данных на панель быстрого выбора.
Но я полагаю, что расширение действительно способ пойти. Вот этот API, который был бы полезен:
openTextDocument({ language: 'javascriptreact' })
но эта команда, я не верю, может быть вызвана без использования расширения.