Оқыту
Модуль
Personalize your Visual Studio Code remote development workflow - Training
Use features in VS Code to personalize your development experience for various remote environments.
Бұл браузерге бұдан былай қолдау көрсетілмейді.
Соңғы мүмкіндіктерді, қауіпсіздік жаңартуларын және техникалық қолдауды пайдалану үшін Microsoft Edge браузеріне жаңартыңыз.
Вы можете реализовать настраиваемый синтаксис для конкретного языка в редакторе Visual Studio с помощью языковой конфигурации для включения операций синтаксиса для конкретного языка. По сравнению с использованием языкового сервера с помощью языковой конфигурации можно повысить производительность, так как все его операции являются локальными.
Visual Studio предлагает интеллектуальные возможности редактирования для различных языков программирования с помощью расширений языка. Конфигурация языка дополняет серверы, использующие протокол LSP и предоставляющие декларативные данные, позволяющие редактору Visual Studio принимать решения о форматировании, цветовой раскраски и завершения без задержки выполнения асинхронного запроса на сервер LSP. Декларативные языковые функции определяются в файлах конфигурации. Например, расширения HTML, CSS и typescript-basic, упакованные в Visual Studio, предлагают подмножество следующих декларативных языковых функций:
Visual Studio предоставляет возможности расширения для определения конфигурации языка для любого языка программирования. Файл конфигурации языка управляет основными функциями редактирования, такими как переключение примечаний, а также сопоставление с скобками и окружающее его содержимое.
Использование языковой конфигурации помогает:
Кроме того, файлы конфигурации языка предоставляют простой способ расширения Visual Studio для поддержки некоторых основных функций рефакторинга с помощью простого JSON-файла.
Существует три части для добавления поддержки языковой конфигурации в расширение Visual Studio:
Вы можете изучить рабочий пример в примере конфигурации языка.
Чтобы создать расширение языковой службы с помощью языковой конфигурации, сначала убедитесь, что для вашего экземпляра VS установлена рабочая нагрузка разработки расширений Visual Studio.
Затем создайте проект VSIX, перейдя к >файлу нового проекта, найдите vsix и найдите проект VSIX:
При создании собственного файла конфигурации языка можно выбрать, какие аспекты необходимо подключить в JSON-файле. Например, можно выбрать поддержку переключения комментариев, автоклиментирования фигурных скобок или любого сочетания доступных функций, описанных в этом разделе.
Чтобы добавить поддержку в расширение, сначала создайте файл конфигурации языка. Имя файла должно соответствовать стандарту: используйте дефисы для разделения слов в имени файла и убедитесь, что он заканчивается language-configuration.json
.
В следующем коде показан пример файла конфигурации языка.
{
"comments": {
"lineComment": "***",
"blockComment": ["{*", "*}"]
},
"brackets": [
["@", "@"],
["#", "#"],
["$", "$"],
["(", ")"]
],
"autoClosingPairs": [
{ "open": "{", "close": "}" },
{ "open": "@", "close": "@" },
{ "open": "#", "close": "#" },
{ "open": "$", "close": "$" },
{ "open": "(", "close": ")" },
{ "open": "'", "close": "'", "notIn": ["string", "comment"] },
{ "open": "\"", "close": "\"", "notIn": ["string"] },
],
"autoCloseBefore": ";:.,=}])>` \n\t",
"surroundingPairs": [
["@", "@"],
["#", "#"],
["$", "$"],
["[", "]"],
["(", ")"],
["'", "'"],
["\"", "\""],
["`", "`"]
],
"wordPattern": "(-?\\d*\\.\\d\\w*)|([^\\`\\~\\!\\@\\#\\%\\^\\&\\*\\(\\)\\-\\=\\+\\[\\{\\]\\}\\\\\\|\\;\\:\\'\\\"\\,\\.\\<\\>\\/\\?\\s]+)",
"indentationRules": {
"increaseIndentPattern": "^((?!\\/\\/).)*(\\{[^}\"'`]*|\\([^)\"'`]*|\\[[^\\]\"'`]*)$",
"decreaseIndentPattern": "^((?!.*?\\/\\*).*\\*/)?\\s*[\\)\\}\\]].*$"
}
}
В следующих разделах описаны параметры, доступные в файле конфигурации языка.
Файлы конфигурации языка предлагают две команды для переключения комментариев. Переключение примечаний строки и переключение блокировок. Вы можете указать и comments.lineComment
управлять тем, как Visual Studio должна комментировать comments.blockComment
строки или блоки.
{
"comments": {
"lineComment": "//",
"blockComment": ["/*", "*/"]
}
}
Этот параметр влияет на поведение текстового редактора Visual Studio при нажатии клавиш CTRL+K, CTRL+C.
При перемещении курсора в скобку, определенную здесь, Visual Studio выделяет эту скобку вместе с соответствующей парой.
{
"brackets": [["{", "}"], ["[", "]"], ["(", ")"]]
}
Соответствующий параметр в диалоговом окне "Параметры инструментов Visual Studio" в текстовом редакторе, "Общие", "Экран" является проверка box Enable brace pair colorization.>
При вводе '
Visual Studio создает пару отдельных кавычки и помещает курсор в середину: '|'
В этом разделе определяются такие пары.
{
"autoClosingPairs": [
{ "open": "{", "close": "}" },
{ "open": "[", "close": "]" },
{ "open": "(", "close": ")" },
{ "open": "'", "close": "'", "notIn": ["string", "comment"] },
{ "open": "\"", "close": "\"", "notIn": ["string"] },
{ "open": "`", "close": "`", "notIn": ["string", "comment"] },
{ "open": "/**", "close": " */", "notIn": ["string"] }
]
}
Ключ notIn
отключает эту функцию в определенных диапазонах кода. Например, при написании следующего кода:
// ES6's Template String
`ES6's Template String`;
Одинарный кавычки не заклонирован.
Пары, которые не требуют notIn
свойства, также могут использовать более простой синтаксис:
{
"autoClosingPairs": [ ["{", "}"], ["[", "]"] ]
}
По умолчанию Visual Studio использует только пары автоклосов, если после курсора есть пробелы. Поэтому при вводе {
в следующий код JSX не будет автоматически выполняться:
const Component = () =>
<div className={>
^ Does not get autoclosed by default
</div>
Однако это определение переопределяет это поведение:
{
"autoCloseBefore": ";:.,=}])>` \n\t"
}
Теперь, когда вы войдете {
прямо перед >
, Visual Studio автоматически заклоняет его с }
помощью.
При выборе диапазона в Visual Studio и вводе открывающей скобки Visual Studio окружает выбранное содержимое парой квадратных скобок. Эта функция называется autosurrounding, и здесь можно определить пары автосборов для определенного языка:
{
"surroundingPairs": [
["{", "}"],
["[", "]"],
["(", ")"],
["'", "'"],
["\"", "\""],
["`", "`"]
]
}
Соответствующий параметр в параметрах инструментов > Visual Studio находится в текстовом редакторе, общие, отображение поля проверка box автоматически окружает выделения при вводе кавычки или квадратных скобок.
wordPattern
определяет, что считается словом на языке программирования. Функции предложения кода используют этот параметр, чтобы определить границы слов, если wordPattern
задано.
{
"wordPattern": "(-?\\d*\\.\\d\\w*)|([^\\`\\~\\!\\@\\#\\%\\^\\&\\*\\(\\)\\-\\=\\+\\[\\{\\]\\}\\\\\\|\\;\\:\\'\\\"\\,\\.\\<\\>\\/\\?\\s]+)"
}
indentationRules
определяет, как редактор должен настраивать отступ текущей или следующей строки при вводе, вставке и перемещении строк или при форматировании текста с помощью CTRL+K, CTRL+D (формат документа) и CTRL K, CTRL++F (выбор формата).
{
"indentationRules": {
"increaseIndentPattern": "^((?!\\/\\/).)*(\\{[^}\"'`]*|\\([^)\"'`]*|\\[[^\\]\"'`]*)$",
"decreaseIndentPattern": "^((?!.*?\\/\\*).*\\*/)?\\s*[\\)\\}\\]].*$"
}
}
Например, совпадения, if (true) {
а если нажать клавишу ВВОД после открытой скобки{
, редактор автоматически отступит один раз, и код будет отображаться следующим increaseIndentPattern
образом:
if (true) {
console.log();
В дополнение к increaseIndentPattern
и decreaseIndentPatter
есть два других правила отступа:
indentNextLinePattern
— Если строка соответствует этому шаблону, то только следующая строка после того, как она должна быть отступена один раз.unIndentedLinePattern
— Если строка соответствует этому шаблону, то его отступы не должны быть изменены, и его не следует оценивать в соответствии с другими правилами.Если для языка программирования не задано правило отступа, редактор отступов завершается открытой скобкой и юниндентами при вводе закрывающей скобки. Скобка здесь определена brackets
.
onEnterRules
определяет список правил для оценки нажатия клавиши ВВОД в редакторе.
{
"onEnterRules": [{
"beforeText": "^\\s*(?:def|class|for|if|elif|else|while|try|with|finally|except|async).*?:\\s*$",
"action": { "indent": "indent" }
}]
}
При нажатии клавиши ВВОД текст перед, после или одной строкой над курсором проверка со следующими свойствами:
beforeText
(обязательно). Регулярное выражение, соответствующее тексту перед курсором (ограничено текущей строкой).afterText
. Регулярное выражение, соответствующее тексту после курсора (ограничено текущей строкой).previousLineText
. Регулярное выражение, соответствующее тексту одной строке над курсором.Если все указанные свойства соответствуют, правило считается соответствующим и не вычисляется.onEnterRules
Можно onEnterRule
указать следующие действия:
indent
(обязательно). Один из none, indent, outdent, indentOutdent
.
none
означает, что новая строка наследует отступ текущей строки.indent
означает, что новая строка отступена относительно текущей строки.outdent
означает, что новая строка неустанно связана с текущей строкой.indentOutdent
означает, что две новые строки вставляются, одна отступная и вторая одна неиндендирована.appendText
. Строка, которая добавляется после новой строки и после отступа.removeText
. Число символов, которые нужно удалить из отступа новой строки.В проекте расширения убедитесь, что файл language-configuration.json
имеет следующие параметры свойств:
Build Action = Content
Include in VSIX = True
Copy to output = Copy always
Кроме того, можно добавить файл грамматики TextMate, чтобы обеспечить цвет синтаксиса для языка. Грамматики TextMate — это структурированная коллекция регулярных выражений и записывается как plist (XML) или JSON-файлы. См . грамматику языка. Если вы не предоставляете файл грамматики для конкретного языка, используется встроенный параметр по умолчанию.
Чтобы добавить пользовательские файлы грамматики TextMate или темы, выполните следующие действия.
Создайте папку с именем "Грамматики" внутри расширения (или это может быть любое имя, выбранное вами).
В папку "Грамматики" включайте все файлы *.tmlanguage, *.plist, *.tmtheme или *.json файлы, которые обеспечивают настраиваемую цветовую настройку.
Кеңес
Файл .tmtheme определяет, как область s сопоставляется с классификациями Visual Studio (именованные цветовые ключи). Для получения рекомендаций можно ссылаться на глобальный файл tmtheme в каталоге %ProgramFiles(x86)%\Microsoft Visual Studio<\version<>\SKU>\Common7\IDE\CommonExtensions\Microsoft\TextMate\Starterkit\Themesg.
Затем создайте .pkgdef
файл. Файл .pkgdef
содержит все сведения о регистрации, которые в противном случае будут добавлены в системный реестр. Дополнительные сведения о файлах см. в pkgdef
разделе "Регистрация VSPackages " и "Что такое pkgdef-файл? И почему?. pkgdef
В файле должен быть путь к language-configuration.json
файлу и путь к грамматике языка. Языковые службы, такие как LSP, запрашивают тип контента редактора и получают это с помощью языковой конфигурации. Эта информация предоставляет аналитику, связанную с языком, на сервере, который может взаимодействовать с инструментами разработки. Если языковая служба не существует, подсистема конфигурации языка возвращается к грамматике TextMate. Файл .pkgdef
должен выглядеть следующим образом:
[$RootKey$\TextMate\Repositories]
"AspNetCoreRazor="$PackageFolder$\Grammars
// Defines where the language configuration file for a given
// grammar name is (value of the ScopeName tag in the tmlanguage file).
[$RootKey$\TextMate\LanguageConfiguration\GrammarMapping]
"text.aspnetcorerazor"="$PackageFolder$\language-configuration.json"
// Defines where the language configuration file for a given
// language name is (partial value of the content type name).
[$RootKey$\TextMate\LanguageConfiguration\ContentTypeMapping]
"RazorLSP"="$PackageFolder$\language-configuration.json"
[$RootKey$\TextMate\LanguageConfiguration\GrammarMapping]
"text.html.basic"="$PackageFolder$\html-language-configuration.json"
"source.js"="$PackageFolder$\javascript-language-configuration.json"
"source.css"="$PackageFolder$\css-language-configuration.json"
"source.cs"="$PackageFolder$\csharp-language-configuration.json
Убедитесь, что свойства pkgdef
файла заданы следующим образом:
Build Action = Content
Include in VSIX = True
Copy to output = Copy always
Чтобы сделать сведения о конфигурации языка доступными для Visual Studio, включите language-configuration
файл в пакет VSIX. В том числе этот файл означает, что он поставляется с расширением Visual Studio. Файл позволяет Visual Studio знать, что языковая конфигурация доступна для использования. Чтобы добавить файл, измените файл vsixmanifest
, чтобы добавить PKGDEF-файл def, например:
<Asset Type="Microsoft.VisualStudio.VsPackage" Path="Test.pkgdef"/>
Оқыту
Модуль
Personalize your Visual Studio Code remote development workflow - Training
Use features in VS Code to personalize your development experience for various remote environments.