Как сделать подсказки в visual studio на русском
Функция хинтинга кода для слабо типизированного скриптового языка всегда была скрытой проблемой для разработчиков: без нее невозможно работать, но она часто стоит бесстрашного времени из-за неправильного написания или непреднамеренного изменения переменных, которые вызывают бесстрашное время. местный. Появление VSCode имеет тенденцию унифицировать область облегченной IDE.В своей новой версии он поставляется с функцией синтаксического анализа JSDoc, которая помогает разработчикам JavaScript предоставлять необходимую информацию в IDE путем написания комментариев и улучшения функции подсказки.
Давайте сначала рассмотрим простой пример (код внешнего интерфейса апплета WeChat)
Можно видеть, что в определении функции есть параметр o объекта типа и обратный вызов параметра обратного вызова типа функции. Однако IDE не может знать из определения кода только, какие поля должны быть включены в объект o и какие параметры будут возвращены в функцию обратного вызова. Для слабо типизированных языков сценариев, таких как JavaScript, эта информация не имеет смысла до этапа выполнения, а для разработчиков эту информацию легко забыть через некоторое время, не говоря уже о передаче третьим лицам. Таким образом, эта информация должна быть записана в JSDoc.
Можно видеть, что тип параметра o и его необходимая внутренняя структура с помощью JSDoc, обратный вызов параметра типа функции вернут тип параметра Error и тип возвращаемого значения void, а другая информация будет четко и ясно отмечена при сопровождении текстовых комментариев. ,
В это время напрямую используйте new CommonUtilsWX() Вызов построенного объекта request() Метод может увидеть следующий экран подсказки
А потом request() Когда функция передается в буквальный объект, вы увидите следующий экран приглашения
Ниже приведен второй пример: определите объект и передайте информацию о типе JSDoc полям в объекте.
В добавок к этому @type В дополнение к ключевым словам, он также используется в <> в" | «Символ. Такое использование означает, что помеченное поле может быть нескольких типов, особенно для ситуации в моем коде, то есть метод фабрики может возвращать любой объект подкласса, принадлежащий родительскому классу, это Если для пометки этого поля используется только родительский тип, среда IDE не может запросить специальный метод в подклассе при его использовании, поэтому после использования нескольких возможных меток типов среда IDE запросит все возможные типы информации запроса Выйти. На данный момент информация выглядит следующим образом
Есть еще один способ определить тип и комментарий каждого поля в объекте, и его можно использовать повторно. @typedef Ключевые слова, используется следующее @typedef Переписанный zy Объект JSDoc:
Верхняя часть используется @typedef Ключевые слова определяют новый тип ZY И заранее определил каждое поле в типе. Затем используйте JSDoc над объектом zy в нижней половине, чтобы сказать, что тип этого объекта ZY , Это использование подходит для многократно используемых объектов типа, или когда все внутренние поля не отображаются буквально или не сосредоточены в регионе.
Ниже показана другая проблема: VSCode импортирует JSDoc в другие файлы в соответствии с зависимостью файлового модуля, например A.js. require("B.js") , Информация JSDoc в B.js может использоваться в JSDoc для A.js, а также может отображаться в подсказке кода A.js. Но иногда бывают ситуации, которые логически не нужны в A.js
require("B.js") , Но в кодировании вам нужно использовать JSDoc в файле B.js. Если из-за этого спроса, дополнительные require("B.js") , Это разрушит нормальные зависимости кода. Так что есть следующее использование:
Этот метод эквивалентен файлу B.js, представленному JSDoc, а модуль в B.js определен как тип B.
Наконец, два звуковых сигнала, впервые появившиеся в техническом кругу за пять или шесть лет, также были затронуты многими старшими блоггерами. С одной стороны, ведение блога — это обмен собственным техническим опытом, получение большего в процессе обмена и улучшение Умение выразить себя в письменной форме. Но для входа в яму всегда нужно входить шаг за шагом, поэтому начните с дополнительных червей.
Можно ли включить подсказки кода в Visual Studio Code для сторонних библиотек?
Использую библиотеку svg.js и её плагины. При наборе кода VSCode не выдаёт подсказки, а на официальной странице svg.js очень маленькая документация, в которой описаны не все методы и функции.
Можно ли каким-то образом сделать так, чтобы VSCode давал подсказки по коду?
ответ разделён на две части:
- Можно ли включить подсказки кода в VSCode для сторонних библиотек?
- Можно ли включить подсказки кода в VSCode для svg.js
- Разбор svg.js
1. Можно ли включить подсказки кода в VSCode для сторонних библиотек?
да, можно.
если вам повезло — устанавливаете из npm пакет и всё.
если не повезло — ищите *.d.ts
npm
definitelytyped
с недавнего времени, некоторые библиотеки при установке из npm уже содержат types и в этом случае не требуется выполнение npm install —save @types
2. Можно ли включить подсказки кода в VSCode для svg.js
имеет .d.ts не всё описано
неизвестно имеют ли .d.ts сомнительно
3. Разбор svg.js
далее пример, взят отсюда:
разбор примера
создаём папку test
переходим в неё
создаём файл package.json следующего содержания:
выполнием npm install
создаётся директория node_modules примерно такого содержания:
создаём и заполняем
найденные с ходу ошибки:
как мы видим, в функцию viewbox передано 4 элемента, в то время как в types принимается всего один
Как получить подсказки типа для отображения?
Я видел, как ютуберы и им подобные работали над Rust в VSC с плагином rust-analyzer, где они отображали необязательные аннотации типов, даже если это не обязательно написано в коде. Это похоже на то, что я набираю foo(a,b) в редакторе, и он автоматически отображает foo(a: A, b :B) , где :A и :B отображаются бледно-серым цветом, возможно, они даже не записаны в файле, просто визуальная подсказка? Приятно и не могу понять, это особенность VSC или анализатора ржавчины? В моем анализаторе ржавчины два параметра «Подсказки по параметрам» и «Подсказки по типу» установлены как включенные.
2 ответа
В этом случае вы ищете parameter hints . Функция, для которой вы хотите отображать подсказки, также должна иметь более одного параметра.
Убедитесь, что параметр включен:
Настройки (пользовательский интерфейс)
Настройки (JSON)
Тогда вы должны получить что-то вроде следующего:
Убедитесь, что включен только rust-analyzer , поскольку он может конфликтовать с rls . Было добавлено предупреждение , в котором упоминается следующее, если оба включены:
Анализатор ржавчины показывает подсказки для:
- Типы локальных переменных
- Имена аргументов функции
- Типы связанных выражений
Вы можете переключать подсказки вставки, добавляя это в свой settings.json :
Или вы можете выполнить поиск «инкрустация ржавчиной» в настройках VSCode.
Это диалоговое окно позволяет изменять стандартное поведение редактора кода. Эти параметры также применяются к другим редакторам, основанным на редакторе кода, таким как представление исходного кода в конструкторе HTML. Чтобы отобразить эти параметры, выберите в меню Сервис пункт Параметры. В папке Текстовый редактор разверните подпапку Все языки, а затем выберите Табуляция.
На этой странице задаются параметры по умолчанию для всех языков разработки. Не забывайте, что сброс параметра в этом диалоговом окне приведет к возврату параметров табуляции для всех языков к выбранному здесь значению. Чтобы изменить параметры текстового редактора только для одного языка, раскройте подпапку для этого языка и выберите соответствующие страницы параметров.
Отступы
Если выбран этот параметр, новые строки не отображаются с отступом. Точка вставки помещается в первый столбец новой строки.
Если выбран этот параметр, для новых строк отступ задается автоматически. Точка вставки помещается в той же начальной точке, что и в предыдущей строке.
Если выбран этот параметр, новые строки располагаются по размеру контекста кода, в соответствии с другими параметрами форматирования кода и соглашениями IntelliSense для выбранного языка разработки. Этот параметр доступен не для всех языков разработки.
Например, строки, заключенные между открывающей фигурной скобкой "( < )" и закрывающей фигурной скобкой "( >)", автоматически получают отступ на дополнительную табуляцию с позиции выравнивания фигурных скобок.
Вкладки
Размер интервала табуляции
Устанавливает расстояние в пробелах между табуляторами. По умолчанию этот параметр равен четырем пробелам.
Устанавливается размер автоматического отступа в пробелах. По умолчанию этот параметр равен четырем пробелам. Для заполнения указанного размера вставляются символы табуляции, символы пробела или оба этих вида символов.
Когда выбран этот параметр, при отступе вставляются только пробелы, а не символы табуляции. Например, если Размер отступа равен 5, то при каждом нажатии клавиши TAB или кнопки Увеличить отступ на панели инструментов Форматирование будет вставляться пять пробелов.
Сохранять знаки табуляции
Если выбран этот параметр, при отступе вставляется максимально возможное число знаков табуляции. Символ табуляции вставляет такое число пробелов, которое указано в поле Размер интервала табуляции. Если размер отступа не кратен размеру интервала табуляции, для заполнения разницы добавляются знаки пробелов.
- Установка локализованной версии файлов.
- Изменение установки Visual Studio для использования другого языка.
Prerequisites
Скачивание и установка локализованных файлов IntelliSense
Скачайте файл IntelliSense для нужных языка и версии.
Извлеките содержимое ZIP-файла.
Выберите пакет SDK, для которого необходимо установить IntelliSense, и перейдите по соответствующему пути. Можно выбрать один из следующих параметров.
Перейдите к версии, для которой необходимо установить локализованные файлы IntelliSense. Например, 6.0.0.
Откройте папку ref.
Откройте папку моникера. Например, net6.0.
В открытой папке моникера создайте вложенную папку. Имя папки указывает, какой язык будет использоваться. В следующей таблице приводятся различные варианты.
Скопируйте в эту новую папку файлы .xml, извлеченные на шаге 3. Файлы .xml распределяются по папкам пакетов SDK, поэтому скопируйте их в соответствующий SDK, выбранный на шаге 4.
Изменение языка Visual Studio
Чтобы в Visual Studio использовать другой язык для IntelliSense, необходимо установить соответствующий языковой пакет. Это можно сделать во время установки или позднее, изменив установку Visual Studio. Если среда Visual Studio уже настроена с нужным вам языком, установка IntelliSense также будет готова.
Установка языкового пакета
Если нужный языковой пакет не был установлен, обновите Visual Studio, как показано ниже.
Чтобы установить, обновить или изменить среду Visual Studio, необходимо войти в учетную запись с правами администратора. Дополнительные сведения см. в статье Разрешения пользователей и Visual Studio.
Найдите установщик Visual Studio на своем компьютере.
Например, на компьютере с Windows 10 нажмите кнопку Пуск и прокрутите список до буквы V, где расположен пункт Visual Studio Installer.
Кроме того, Visual Studio Installer можно найти в следующем расположении:
C:\Program Files (x86)\Microsoft Visual Studio\Installer\vs_installer.exe
Для продолжения работы может потребоваться обновление самого установщика. Если это так, следуйте инструкциям на экране.
В установщике найдите установленный у вас выпуск Visual Studio, для которого нужно добавить языковой пакет, и щелкните Изменить.
Если кнопка Изменить отсутствует, но доступна кнопка Обновить, необходимо обновить Visual Studio и лишь затем изменить установку. После завершения обновления должна появиться кнопка Изменить.
На вкладке Языковые пакеты выберите языки, которые нужно установить, или отмените выбор тех, которые нужно удалить.
Выберите Изменить. Начнется обновление.
Изменение языковых параметров в Visual Studio
После установки нужных языковых пакетов измените параметры Visual Studio для использования другого языка, как описано ниже.
Запустите Visual Studio.
В начальном окне выберите Продолжить без кода.
В строке меню выберите Сервис>Параметры. Откроется диалоговое окно "Параметры ".
В узле Среда выберите Выбор языка.
Перезапустите Visual Studio.
Краткие сведения — это функция IntelliSense, которая отображает сигнатуры и описания методов, когда пользователь наводит указатель мыши на имя метода. Вы можете реализовать такие функции на основе языка, как краткие сведения, определив идентификаторы, для которых необходимо предоставить описания краткие сведения, а затем создав подсказку, в которой будет отображаться содержимое. Можно определить краткие сведения в контексте языковой службы или определить собственное расширение имени файла и тип содержимого и отобразить краткие сведения только для этого типа. Кроме того, можно отобразить краткие сведения для существующего типа содержимого (например, "Text"). В этом пошаговом руководстве показано, как отобразить краткие сведения для типа содержимого text.
Пример краткие сведения в этом пошаговом руководстве отображает подсказки, когда пользователь наводит указатель мыши на имя метода. Эта схема требует реализации следующих четырех интерфейсов:
исходный интерфейс поставщика
интерфейс поставщика контроллера
поставщики источников и контроллеров Managed Extensibility Framework (MEF). они отвечают за экспорт классов источников и контроллеров, а также импорт служб и брокеров ITextBufferFactoryService , например,, который создает текстовый буфер подсказки, и IQuickInfoBroker , который запускает сеанс краткие сведения.
В этом примере источник краткие сведения использует жестко закодированный список имен и описаний методов, но в полной реализации языковая служба и документация по языку отвечают за предоставление этого содержимого.
Необходимые компоненты
начиная с Visual Studio 2015 вам не нужно устанавливать пакет SDK для Visual Studio из центра загрузки. он входит в состав Visual Studio установки в качестве дополнительного компонента. Пакет SDK для VS можно установить и позже. дополнительные сведения см. в статье установка пакета SDK для Visual Studio.
Создание проекта MEF
Создание проекта MEF
Добавьте шаблон элемента классификатора редактора в проект. Дополнительные сведения: Создание расширения с помощью шаблона элемента редактора.
Удалите файлы существующих классов.
Реализация источника краткие сведения
Источник краткие сведения отвечает за сбор набора идентификаторов и их описаний, а также добавление содержимого в текстовый буфер подсказки при обнаружении одного из идентификаторов. В этом примере идентификаторы и их описания просто добавляются в конструктор исходного кода.
Реализация источника краткие сведения
Добавьте файл класса с именем TestQuickInfoSource .
Добавьте ссылку на Microsoft. VisualStudio. Language. IntelliSense.
Добавьте приведенные ниже импортированные данные.
Объявите класс, реализующий IQuickInfoSource , и назовите его TestQuickInfoSource .
Добавьте поля для поставщика источника краткие сведения, текстового буфера и набора имен методов и сигнатур методов. В этом примере имена и подписи методов инициализируются в TestQuickInfoSource конструкторе.
Добавьте конструктор, который задает поставщик источника краткие сведения и текстовый буфер, и заполняет набор имен методов, а также сигнатуры и описания методов.
Выполните метод AugmentQuickInfoSession. В этом примере метод находит текущее слово или предыдущее слово, если курсор находится в конце строки или в текстовом буфере. Если слово является одним из имен методов, описание этого имени метода добавляется в содержимое краткие сведения.
Также необходимо реализовать метод Dispose (), поскольку IQuickInfoSource реализуется IDisposable :
Реализация поставщика источника краткие сведения
Поставщик источника краткие сведения служит главным образом для экспорта самого себя в качестве части компонента MEF и создания экземпляра источника краткие сведения. Поскольку это часть компонента MEF, она может импортировать другие компоненты MEF.
Реализация поставщика источника краткие сведения
Объявите поставщик источника краткие сведения с именем TestQuickInfoSourceProvider , реализующий IQuickInfoSourceProvider , и экспортируйте его с помощью NameAttribute элемента "ToolTip краткие сведения Source", объекта OrderAttribute Before = "default" и ContentTypeAttribute объекта "Text".
Импортируйте две службы редактора, ITextStructureNavigatorSelectorService и ITextBufferFactoryService , как свойства TestQuickInfoSourceProvider .
Реализуйте TryCreateQuickInfoSource , чтобы вернуть новый объект TestQuickInfoSource .
Реализация контроллера краткие сведения
Контроллеры краткие сведения определяют, когда отображается краткие сведения. В этом примере краткие сведения появляется, когда указатель наведен на слово, соответствующее одному из имен методов. Контроллер краткие сведения реализует обработчик событий наведения указателя мыши, который запускает сеанс краткие сведения.
Реализация контроллера краткие сведения
Объявите класс, реализующий IIntellisenseController , и назовите его TestQuickInfoController .
Добавьте закрытые поля для текстового представления, текстовые буферы, представленные в текстовом представлении, сеанс краткие сведения и поставщик контроллера краткие сведения.
Добавьте конструктор, который задает поля и добавляет обработчик событий наведения указателя мыши.
Добавьте обработчик событий наведения указателя мыши, который запускает сеанс краткие сведения.
Реализуйте Detach метод таким образом, чтобы он удаляет обработчик событий наведения указателя мыши при отсоединении контроллера от текстового представления.
Реализуйте ConnectSubjectBuffer метод и DisconnectSubjectBuffer метод как пустые методы в этом примере.
Реализация поставщика контроллера краткие сведения
Поставщик контроллера краткие сведения в основном служит для экспорта самого себя в составе компонента MEF и создания экземпляра контроллера краткие сведения. Поскольку это часть компонента MEF, она может импортировать другие компоненты MEF.
Реализация поставщика контроллера краткие сведения
Объявите класс с именем TestQuickInfoControllerProvider , реализующий IIntellisenseControllerProvider , и экспортируйте его с помощью элемента NameAttribute "краткие сведения Controller" и ContentTypeAttribute объекта "Text":
Импортируйте IQuickInfoBroker как свойство.
Реализуйте TryCreateIntellisenseController метод, создав экземпляр контроллера краткие сведения.
Сборка и тестирование кода
Чтобы протестировать этот код, создайте решение Куиккинфотест и запустите его в экспериментальном экземпляре.
Создание и тестирование решения Куиккинфотест
при запуске этого проекта в отладчике запускается второй экземпляр Visual Studio.
Создайте текстовый файл и введите текст, содержащий слова "Добавить" и "Subtract".
Наведите указатель мыши на одно из вхождений "Добавить". Должна отобразиться подпись и описание add метода.
Отладчик
Использование F10 вместо F5 для сборки, запуска и присоединения отладчика автоматически прерывается при первом выполнении вашего собственного кода. В точках останова нет необходимости.
Поддерживается начиная с Visual Studio 2005
Reattach to process (Shift+Alt+P) чрезвычайно полезная функция, которая помогает снова и снова присоединяться к одному и тому же процессу.
Поддерживается начиная с Visual Studio 2017 v15.8
Синяя точка на поле указывает на переключение потоков при выполнении отладки.
Поддерживается начиная с Visual Studio 2013
Продолжение под катом!
Solution
Повысьте производительность загрузки решения и уменьшите визуальный шум, отключив восстановление расширений узлов в Solution Explorer, а также Reopen documents on solution load.
Поддерживается начиная с Visual Studio 2019
Для быстрой навигации используйте Ctrl+T, чтобы найти что-либо в вашем решении — файлы, классы и т. д.
Поддерживается начиная с Visual Studio 2017
Назначьте сочетание клавиш для выполнения “git pull”, чтобы не приходилось использовать для этого CLI или Team Explorer.
Поддерживается начиная с Visual Studio 2019
Дайте Solution Explorer возможность автоматически выбирать текущий активный документ, чтобы никогда не терять его расположение в проекте.
Поддерживается начиная с Visual Studio 2010
Редактор
Легко выделяйте HTML-элементы тегом div, используя комбинацию Shift+Alt+W. Вставленный div вы можете легко отредактировать на любой тег, который вы хотите, и закрывающий тег изменится автоматически.
Поддерживается начиная с Visual Studio 2017
Поддерживается начиная с Visual Studio 2013
Вам не нужно самостоятельно ставить двойные кавычки вокруг имен свойств JSON — просто введите двоеточие, и Visual Studio автоматически поставит их.
Поддерживается начиная с Visual Studio 2015
Сделайте IntelliSense и всплывающие подсказки полупрозрачными на время нажатия и удержания Control.
Поддерживается начиная с Visual Studio 2010
Вместо повторного ввода ‘(‘ для отображения информации о параметрах в сигнатурах методов используйте Ctrl+Shift+Space для отображения используемой в данный момент перегрузки.
Поддерживается начиная с Visual Studio 2010
Прочее
Воспроизведение звука при возникновении определенных событий в Visual Studio.
Поддерживается начиная с Visual Studio 2010
Создавайте собственные макеты окон для конкретных сценариев разработки или настроек монитора, а также легко переключайтесь между ними.
Поддерживается начиная с Visual Studio 2017
Укажите необходимые компоненты Visual Studio для любого решения, и Visual Studio предложит пользователю установить их, если они отсутствуют. Подробнее читайте в статье «Конфигурируйте Visual Studio в вашей организации с помощью .vsconfig».
Поддерживается начиная с Visual Studio 2019
Расширения
Visual Studio Spell Checker. Расширение редактора, которое проверяет орфографию комментариев, строк и обычного текста. Оно также может проверять орфографию всего решения, проекта или выбранных элементов. Доступны опции для определения нескольких языков для проверки правописания.
Поддерживается начиная с Visual Studio 2013
Add New File. Расширение для Visual Studio, позволяющее простое добавление новых файлов в любой проект. Просто нажмите Shift+F2, чтобы создать пустой файл в выбранной папке или в той же папке, что и выбранный файл.
Поддерживается начиная с Visual Studio 2015
Git Diff Margin. Git Diff Margin отображает текущие изменения Git в редактируемом файле на поле и на полосе прокрутки Visual Studio.
Поддерживается начиная с Visual Studio 2012
Это были лишь несколько из тысяч доступных расширений. Чтобы увидеть больше — перейдите на Visual Studio Marketplace.
В заключение
Читайте также: