VS Code

Введение

Visual Studio Code - мультиплатформенный редактор с открытым кодом от Microsoft на базе движка Electron.

Vim удобный и мощный редактор, и во многих случаях он не заменим, например на отдалённом сервере, куда доступ есть только через консоль, и по медленному каналу. Но для повседневной разработки настроить его очень и очень не просто.

Я успешно вёл в нём разработку на C, который он хорошо поддерживает из коробки, в том числе автодополнение через ctags.

Так же удобно использовать vim для разработки на Go благодаря плагину Vim-Go, и собственному мощному инструментарию Go. Но с прочими языками всё не так радужно.

Очень хороша IntelliJ IDEA и с хорошим vim-mode плагином, но это всё же мощная IDE и для мелких повседневных задач - стрельба из пушки по воробьям. Да и при использовании Communiti Edition накладывает много ограничений как на доступные языки (Java, Kotlin, Go), так и на область применения ограниченную лицензией.

Так что уже долгое время я присматривал альтернативу для Vim, когда начали появлятся редакторы на базе движка Electron:

Atom на мой взгляд перегружен функционалом, и плагин для vim-mode в нём мягко говоря странный. Так я не нашел поддержки одной из основных vim-овских команд :.

LightTable сыроват, маленькое комьюнити соответственно мало расширений. Плагин для vim-mode тоже не без странностей и глюков. Не нашел поддержки c/c++.

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

Ключевые для меня моменты:

  • Поддержка vim-mode сторонним плагином на высоте. При переключении между оригинальным Vim и VSCode с установленным плагином я не испытывал дискомфорта, когда внезапно попадаешь на отсутствующую команду. Некоторые неувязки исправляются конфигурационными файлами.
  • Удобное конфигурирование через JSON файлы. Причём конфигурацию можно изменять как глобально, так и создать непосредственно для рабочей области.
  • Нет отдельных сущностей для проекта и/или рабочей области. Достаточно запустить code . из консоли и текущая директория с поддиректориями считается рабочей областью.
  • Кроме собственно возможностей редактора VSCode предоставляет возможности для интеграции с отладчиком и создания задач для сборки проектов.
  • Палитра команд с нечётким поиском. Т.е. для большинства действий не надо пользоваться мышью для поиска команды в меню или вспоминать точное название команды. Достаточно нажать Ctrl+P > (или Ctrl+Shift+P, или F1) и начать писать одно или несколько слов команды или её описания.

Установка

Качаем пакет для вашей операционки. Для противников пакетных менеджеров и инсталляторов есть сборки в архивах.

Я использовал пакет для Debian и установил его через sudo dpkg -i code_1.7.2-1479766213_amd64.deb.

Теперь можем запустить редактор code. Видим минималистичный интерфейс.

Теперь установим поддержку vim-mode:

  • Нажимаем Ctrl+P для вызова поля ввода действий,
  • вводим ext install vim Enter для поиска расширений.
  • И устанавливаем Vim от vscodevim.

Собственно до этого момента я набирал этот текст в оригинальном vim, теперь переключился в VSCode.

Темы

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

Нажимаем F1 (или Ctrl+Shift+P) и начинаем вводить color theme или icon theme. Как нужная команда останется у нас на первом месте можно сразу жать Enter, что бы выполнить её. Так же нужную команду можно выбрать стрелками вверх-вниз, но это лишнее движение правой рукой ;-)

Настройки

Если какое-то поведение среды вас не устраивает, то его можно почти наверняка изменить настройками.

Например, по умолчанию используется шрифт Droid Sans Mono. Он сам по себе не плох, но мне больше нравится Input да и размер настроить не мешает.

Открыть файл настроек можно через меню или через палитру команд.

Нажимаем F1, начинаем набирать user settings и как видим, что достигли нужного пункта жмём Enter.

Рабочая область автоматом разбивается на две группы, в левой настройки по умолчанию, в правой редактор с файлом settings.json настроек пользователя.

Копируем интересующие нас настройки слева на право и редактируем их по своему вкусу.

У меня в итоге получился такой файл:

// settings.json
{
    "editor.fontFamily": "'Input', 'Droid Sans Mono', 'Courier New', monospace, 'Droid Sans Fallback'",
    "editor.fontSize": 12,
    "editor.rulers": [80, 120],

    "files.exclude": {
        "**/.git": true,
        "**/.svn": true,
        "**/.hg": true,
        "**/.DS_Store": true,
        "**/.*.swp": true
    }
}

Аналогично можно поменять настройки рабочей области: Нажимаем F1, начинаем набирать workspace settings и как видим, что достигли нужного пункта жмём Enter.

Следует отметить, что настройки вступают в силу сразу после сохранения файла.

Настроить язык среды так же можно через конфигурационные файлы. Ну мало ли вам не нравится русский интерфейс?

Нажимаем F1, начинаем набирать conf lang и как видим, что достигли нужного пункта жмём Enter.

В открывшемся файле указываем указываем для параметра locale код языка. Для должного эффекта в этом случае придётся перезапустить VSCode.

Внимательный читатель, конечно обратил внимание, что для редактирования языка я написал conf lang вместо полного configure language. Но это не ошибка, а невероятно удобная фича нечёткого поиска. Можно набирать conflang или даже cola и всё равно нужна команда будет найдена.

Да, если вы оставили VSCode на русском языке, то F1 настряз Enter тоже сработает.

Так что не зря палитра команд назначена так же на клавишу F1 по сути это мини-помощь с поиском.

Клавиатурные комбинации

Поменять сочетания клавиш для вызова той или иной команды может потребоваться по разным причинам: комбинация не устраивает, отсутствует, или как в моём случае переопределена расширением vim.

Нажимаем F1, начинаем набирать keyboard shortcut и как видим, что достигли нужного пункта жмём Enter.

Как и для настроек окно будет разбито на две панели со списком существующих комбинаций (с учётом определённых плагинами). В конце списка существующих комбинаций приведены команды, на которые не назначены шорткаты.

// keybinding.json
[

// Показать информацию по идентификатору
    { "key": "ctrl+i",
        "command": "editor.action.previewDeclaration",
        "when": "editorHasDefinitionProvider && editorTextFocus && !inReferenceSearchEditor" },
    { "key": "shift+f6",
        "command": "editor.action.rename",
        "when": "editorHasRenameProvider && editorTextFocus && !editorReadonly" },

// Показать/скрыть боковую панель
    { "key": "f3", "command": "workbench.action.toggleSidebarVisibility" },
// Показать/скрыть панель (fix vim)
    { "key": "ctrl+j", "command": "workbench.action.togglePanel" },
    
    
// Перемещение между редакторами
    { "key": "ctrl+l",
        "command": "workbench.action.focusNextGroup" },
    { "key": "ctrl+h",
        "command": "workbench.action.focusPreviousGroup" },
    { "key": "alt+l",
        "command": "workbench.action.nextEditor" },
    { "key": "alt+h",
        "command": "workbench.action.previousEditor" },
    { "key": "alt+right",
        "command": "workbench.action.nextEditor" },
    { "key": "alt+left",
        "command": "workbench.action.previousEditor" },
    { "key": "ctrl+f4",
        "command": "workbench.action.closeActiveEditor" },

// Запуск задач
    { "key": "f8",
        "command": "workbench.action.tasks.build" },
    { "key": "ctrl+f8",
        "command": "workbench.action.tasks.runTask"
    },
// Vim correction
    { "key": "ctrl+]",
        "command": "editor.action.goToDeclaration",
        "when": "editorHasDefinitionProvider && editorTextFocus" },
    { "key": "ctrl+t",
        "command": "workbench.action.navigateBack" },

    { "key": "ctrl+w n", "command": "workbench.action.files.newUntitledFile" },
    { "key": "ctrl+w c", "command": "workbench.action.closeActiveEditor" }

]
 
comments powered by Disqus