VSCode — самый популярный редактор кода среди веб-разработчиков. Вы можете использовать его с нуля, однако со временем его базовых функций станет недостаточно. Рассказываю, как сам докрутил этот редактор под свои потребности.

Содержание

Вводная часть

История появления редактора

VSCode разрабатывается в Microsoft и унаследовал имя от их тяжеловесного IDE — Visual Studio. Первый релиз был аж в апреле 2015 года. В 2016 году редактор стал доступен для всех желающих.

Особенности

  • Сделан с помощью Electron.js, то есть под капотом у него HTML + CSS + JS

  • Поддерживает разработку на разных языках: Java, JavaScript, Go, Node.js, Python, C++ и так далее (см. Расширения)

  • Имеет ОГРОМНОЕ количество настроек, которыми удобно управлять

  • Многие фичи скрыты из графического интерфейса, но их можно найти через Command Pallete (cmd/win + shift + P)

  • Возможности редактора могут быть дополнены с помощью расширений

  • Удобный и быстрый магазин расширений внутри редактора и через браузер

  • Собирает данные и шлёт их в Microsoft, но телеметрию можно отключить в настройках

  • В среднем скорость отклика медленнее, чем у нативных конкурентов

Преимущества

  • Быстрее, чем типичное приложение на Electron.js

  • Сообщество

  • Плотная интеграция с Github

  • Плотная интеграция с TypeScript

  • Open source

  • Бесплатный

  • Низкий порог входа

  • Можно настроить под себя почти что угодно

Настройки

Настройки — это моя любимая часть VSCode. За пять лет я потратил на них десятки часов (если не сотни).

JSON vs UI

У настроек есть два режима просмотра/управления:

  • Стандартный просмотр через UI с категориями и поиском

    • Использую для поиска по настройкам или для просмотра возможных значений

  • Просмотр большого JSON со всеми изменёнными настройками

    • Использую во всех остальных случаях, к тому же чаще

Забавно, что шоткат для настроек cmd/win + , по умолчанию вызывает именно JSON-режим. А для GUI-режима нужно нажать более длинный cmd/win + shift + ,. Наверное, это исторически так сложилось ????‍♂️

Синхронизация настроек

VSCode сам научился синхронизировать настройки между устройствами. До этого требовалось расширение и пара гистов на Гитхабе.

Кажется, тут нечего добавить, потому что синхронизация легко настраивается через меню «Шестерёнка» (требует логина через Github).

Сортировка и поиск настроек через JSON

В режиме JSON мы видим только те параметры, которые отличаются от настроек по умолчанию. Если вы открыли VSCode впервые, то в файле будет только {}. Со временем, по мере подстройки редактора, он наполнится — в моём сейчас 370 строк.

Чтобы было удобнее ориентироваться, я использую автосортировку по алфавиту (с помощью расширения JSON-sort) и пользуюсь поиском по ключевым словам в файле.

VSCode сам линтит этот JSON: предупреждает об ошибках, подсказывает имена настроек и делает тусклыми неиспользуемые опции.

Полезные настройки

Некоторые из моих любимых! Их можно просто скопировать себе в JSON с настройками.

Доводка редактора

"editor.acceptSuggestionOnEnter": "off",
"editor.bracketPairColorization.enabled": true,
"editor.codeActionsOnSave": {
  "source.fixAll.eslint": true
},
"editor.foldingImportsByDefault": true,
"editor.fontFamily": "'Fira Code', 'Courier New', monospace",
"editor.fontLigatures": true,
"editor.guides.bracketPairs": "active",
"editor.inlineSuggest.enabled": true,
"editor.lineNumbers": "interval",
"editor.linkedEditing": true, // doesn’t work for JSX 
"editor.minimap.enabled": false,
"editor.quickSuggestions": false,
"editor.scrollBeyondLastColumn": 0,
"editor.suggest.preview": true,
"editor.suggestSelection": "recentlyUsedByPrefix",
"editor.unicodeHighlight.ambiguousCharacters": false, // useful for russian symbols

Улучшение JS

Эти настройки позволяют делать статическую типизацию в JS без использования TypeScript.

// подсказки типов ⬇️
"javascript.inlayHints.enumMemberValues.enabled": true,
"javascript.inlayHints.functionLikeReturnTypes.enabled": true,
"javascript.inlayHints.parameterNames.enabled": "literals",
"javascript.inlayHints.parameterTypes.enabled": true,
"javascript.inlayHints.propertyDeclarationTypes.enabled": true,
"javascript.inlayHints.variableTypes.enabled": true,
"javascript.updateImportsOnFileMove.enabled": "always",

// ошибки типизации ⬇️
"js/ts.implicitProjectConfig.checkJs": true,

Прочее

// Работа с файлами
"files.autoSave": "onFocusChange",
"files.defaultLanguage": "markdown",

// Доводка терминала
"terminal.integrated.defaultProfile.osx": "zsh",
"terminal.integrated.fontSize": 10,

// Доводка рабочей области
"workbench.colorCustomizations": {
    "tab.activeBackground": "#fff3"
},
"workbench.editor.limit.value": 5,

Расширения

Я часто ищу новые расширения и отключаю бесполезные. Для того чтобы накопить несколько десятков любимых расширений, мне потребовалось 5 лет. Ищи favorite list ниже ;)

Featured

VSCode помимо хорошего поиска и удобных категорий имеет тэг с отборными расширениями, которые меняются примерно раз в месяц. Рекомендую иногда в него заглядывать, чтобы находить свежие и интересные штуки.

Любимые расширения

  1. Error Lens

    Улучшает подсветку ошибок, ворнингов и прочей информации

  1. Change-case

    Быстрая замена регистра и стиля написания выделенного текста: CONSTANT_CASE, snake_case, etc.

  1. Material Icon Theme

    Иконки в стиле Material Design, но главное что их очень много и они гармоничнее прочих. По-моему лучшие.

  1. Project Manager

    Лёгкий способ переключать проекты в редакторе

  1. Quit Control for VSCode

    Для тех, кто периодически всё проклинает из-за случайно нажатого CMD + Q. Спасительная штука.

  1. GitLens — Git supercharged

    Git GUI на стероидах прямо в VSCode. Тот случай, когда 80% проблем легче решить из графического интерфейса, чем в терминале.

  1. New Relic CodeStream: GitHub, GitLab, Bitbucket PRs and Code Review

    Единый интерфейс для отправки, ревью и приёма ваших PR и MR в VSCode с удобным интерфейсом. Можно даже не заходить на сайт бесплатного и устаревшего self-hosted GitLab вашей конторы вашего хостинга для Гита

  1. Markdown All in One

    Всё, что вам надо для написания Markdown (keyboard shortcuts, table of contents, auto preview and more)

  1. Open in browser

    ????‍♂️

  1. Path Intellisense

    Автокомплит для путей до файлов

  1. Prettier - Code formatter

    Автоматическое форматирование кода почти без настроек

  1. Quokka.js

    JS/TS интерактивная среда исполнения кода прямо в VSCode

  1. REST Client

    Как Postman, но в виде файлов в вашем проекте

  1. Tabnine AI

    Нейросетевые подсказки кода экономящие вам время

  1. Turbo Console Log

    console.log по шоткату с генерацией подписей. Всё.

  1. WakaTime

    Штука, которая считает время написания кода, а не просто время открытого тикета или редактора. Есть подробная статистика.

  1. Auto Rename Tag

    Автоматическое переименование парных тэгов в HTML и JSX

  1. Better Comments

    Улучшенное комментирование кода с помощью аннотаций с предупреждениями, информацией, TODO и многим другим!

  1. gitignore

    Позволяет извлекать шаблоны .gitignore из репозитория https://github.com/github/gitignore.

  1. ESLint

    Интегрирует ESLint JavaScript в VS Code.

  1. Babel JavaScript

    VSCode syntax highlighting for today's JavaScript

  1. Color Highlight

    Highlight web colors in your editor

  1. Draw.io Integration

    This unofficial extension integrates Draw.io into VS Code.

  1. EditorConfig for VS Code

    EditorConfig Support for Visual Studio Code

  1. Git Graph

    View a Git Graph of your repository, and perform Git actions from the graph.

  1. GitHub Pull Requests and Issues

    Pull Request and Issue Provider for GitHub

  1. GitHub Repositories

    Remotely browse and edit any GitHub repository

  1. HTML CSS Support

    CSS Intellisense for HTML

  1. Intelli Refactor

    Smartly select range for refactoring under cursor, like IntelliJ / Android Studio.

  1. IntelliSense for CSS class names in HTML

    CSS class name completion for the HTML class attribute based on the definitions found in your workspace.

  1. LeetCode

    Solve LeetCode problems in VS Code

  1. Live Server

    Launch a development local Server with live reload feature for static & dynamic pages

  1. Live Share

    Real-time collaborative development from the comfort of your favorite tools.

  1. npm

    npm support for VS Code

  1. npm Intellisense

    Visual Studio Code plugin that autocompletes npm modules in import statements

  1. Sort JSON objects

    Sorts the keys within JSON objects

  1. Space Block Jumper

    Jump vertically across space-delimited blocks.

???? Если у вас есть свои хитрости и находки, поделитесь в комментариях. Обсудим вместе!

Комментарии (19)


  1. GoldGoblin
    01.03.2022 21:28
    +4

    А перевести описание ко всём плагинам терпения не хватило?


    1. m0rtyn Автор
      01.03.2022 22:48
      -7

      Пофлексил эту фичу ????


      1. JimDi
        02.03.2022 04:49
        +2

        ну и ещё бы ссылки на все аддоны, чтоб уже совсем удобно было


        1. m0rtyn Автор
          02.03.2022 11:32

          Идея хорошая. Лично мне ссылки на сайт с расширением всегда мешали. Проще было вбить в поиске внутри VSCode. Но доработка стоящая.


      1. a3or
        02.03.2022 06:06

        А на русском слабо? Ну и даже в таком варианте правильней использовать другой падеж "Пофлексил этой фичей".


        1. m0rtyn Автор
          02.03.2022 11:35

          ???? Честно говоря, слабо. Хороший вопрос.

          Современный лексикон очень быстро меняется и я даже не знаю как по-русски это сказать без потери смысла или без удлинения фразы в три раза.


          1. a3or
            02.03.2022 13:18
            +1

            Пофлексил - это похвастался.

            Фича - это особенность.

            Итог: "похвастался этой особенностью"/"я умею писать(читать) на английском". Хотя наверняка часть смысла будет искажена. Но это потому что мы даже точно не знаем, какой смысл скрыт в указываемой фразе.


            1. m0rtyn Автор
              02.03.2022 21:03
              +1

              Я имел в виду «флексинг» по определению Бюро Горбунова и Basecamp, где «гибкие фичи» — это часть методологии FFF (fix time, fix budget, flex scope)


              1. a3or
                03.03.2022 04:13
                +1

                Значит мы неправильно поняли друг друга, на молодежном слэнге "флексить" - это совсем другое. Спасибо за пояснение, с удовольствием ознакомился с FFF.

                UPD: читал на Хабре тут

                https://habr.com/ru/post/514502/


  1. alexeyinn
    02.03.2022 08:08
    +1

    Забавно, что шоткат для настроек cmd/win + , по умолчанию вызывает именно JSON-режим.

    У меня на win 10 не работает;(


    1. m0rtyn Автор
      02.03.2022 11:38

      Можно пойти через иконку шестерёнки снизу слева. Там же будет подсказка работающего у вас шотката.


      1. alexeyinn
        02.03.2022 11:40

        Все равно открывает GUI, а не JSON


  1. idelgujin
    02.03.2022 09:07

    Интересно, есть ли расширение чтобы я мог вставить иконку из FontsAwesome "на горячую"? Из контекстного меню кликнуть и выбрать.


  1. abyssSoft
    02.03.2022 10:23
    +1

    Хочу сказать спасибо за статью, для начинающих очень даже хорошо, я сам почти 10 лет бесплатно учу детей программированию и понимаю как часто не хватает таких простых статей для них.

    Хочу так же попросить немного изменить статью, чтобы именно начинающие могли ей пользоваться как эталоном. Дело в том, что читать статью будут именно начинающие, в том числе и школьники, а значит им и так сложно разобраться в море информации поэтому нужно все упростить, поэтому все описание лучше перевести на русский :)

    Ссылку на статью сохранил и буду выдавать всем своим ребятам, еще раз спасибо за статью.


    1. m0rtyn Автор
      02.03.2022 11:40

      Хороший аргумент, полностью с ним согласен. Статью стоит доработать и облегчить. Поставил себе задачу.


  1. jesaiah4
    02.03.2022 11:08
    +1

    после ваших плагинов , у меня теперь в автодополнение по 2 строчки одного и того же метода показывает (как будто дубли). Как это исправить ?


    1. m0rtyn Автор
      02.03.2022 12:03
      -1

      Скорее всего дело в том, что подсказывают сразу два-три разных источника. Например, Tabnine, TypeScript и VSCode дают одинаковый совет. В этом случае всё нормально, такое бывает.

      Если же подсказки дублируются из одного источника, то можно перезагрузиться или снести tabnine до лучших времён.

      Вот как я смотрю откуда идут подсказки. У tabnine есть иконка, а также появляется подпись при выборе опции.


  1. Valery4
    03.03.2022 07:08

    "editor.acceptSuggestionOnEnter": "off",

    Вот это для чего? Без описания, просто скопируйте и используйте - выглядит как сборник вредных советов.


  1. LeshaRB
    03.03.2022 10:38

    1 Неплохо б описание всех настроек, раз вы уже рекомендуете

    2 Описание плагинов и ссылку

    Статься сырая имхо