Как пользоваться Vim, взяв все лучшее из Visual Studio Code

1
893
views

Перевод статьи «Vim for people who use Visual Studio Code».

Vim и VS Code
BG photo by Federico Beccari via Unsplash.

Сразу хочу сказать, что эта статья не будет в стиле «редактор-шейминг». Вы можете пользоваться любым редактором, какой вам больше по душе. На самом деле это не имеет большого значения. Я просто хочу написать о Vim, потому что именно с этим редактором я достиг такого уровня продуктивности, какого мне не удавалось достичь ни с одним другим (я пользовался (Sublime Text, Atom и VS Code).

Если вы слыхали о Vim и хотели бы его испытать, надеюсь, моя статья поможет вам найти в этом редакторе те вещи, к которым вы привыкли при работе с VS Code.

Почему именно Vim?

Для использования этого редактора есть много причин, я поделюсь теми, что имели значение для меня.

С Vim вы «держите руки на 10 и 2»

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

Давайте немного посчитаем.

Чтобы переместить руку с клавиатуры на мышь, мне требуется 600мс. В среднем при написании кода я делаю это примерно раз в минуту (это может быть прокрутка, переход к другому файлу и т. п.).

600 (зря потраченных) мс х 60 (раз в час) х 5 (часов написания кода) = 180 000мс потрачено впустую.

А это 3 минуты каждый день.

Окей, окей, возможно, это звучит не слишком устрашающе, но ведь эти 3 минуты могли быть потрачены на написание функции или рефакторинг, а не на пассы руками, как у Гарри Поттера!

Скорость

Скорость в использовании Vim

У меня есть любимая цитата о том, на что похоже написание кода с Vim:

«Кодинг на скорости мысли».

В основе Vim лежит идея прямой коммуникации с компьютером. Вы говорите ему, что вам нужно, и он это делает. Один из приемов меня особенно поразил: чтобы удалить все между двумя объектами (скобками, кавычками и т. д.) нужно всего лишь ввести

di'

А ведь это лишь малая толика тех потрясающих вещей, которые вы можете делать в Vim.

Я настоящий программист!

Пока будете осваивать Vim, непременно лучше познакомитесь с UNIX. Это, так сказать, часть пути обучения. А у меня складывается впечатление, что чем лучше человек знаком с вещами вроде bash, тем лучшим программистом он станет.

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

Как выйти из Vim?

Велика вероятность, что вам приходилось редактировать файл на Linux-сервере и попросту не знать, как выйти из этого файла. Это могло быть, например, изменение SSH-ключа на Digital Ocean. Умея работать с Vim, о подобных вещах беспокоиться не придется!

Настоящая причина, почему я перешел на Vim

Настало время раскрыть истинные побудительные мотивы. Настоящим катализатором моего перехода на Vim был просмотр видео, где Кайл Мэтьюз (создатель Gatsby.js) использовал этот редактор в ходе демо.

Фишки VS Code и их эквиваленты

Убедил? Тогда вот вам несколько инструментов!

Система плагинов

Vim сам по себе это скорее костяк, на который можно нарастить мышцы в виде плагинов. Чтобы их добавить, нужно иметь механизм управления плагинами. Например, Plug. На самом деле есть и другие менеджеры плагинов, а на Plug я остановился без всяких особых причин. Он мне понравился, проблем с ним у меня не было. Чисто для справки: Vundle устарел.

Поиск файлов

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

Fuzzy Finder(fzf) + Ripgrep

Размытый поиск в vim
Размытый поиск «theme»

Fzf это очень хорошо спроектированный и поддерживаемый «размытый» поиск, работающий как в командной строке, так и в Vim.

Примечание: во многих статьях вам может встретиться упоминание Ag(«серебряный поисковик»), но Vim-плагин для Ag уже не поддерживается, так что я советую использовать RipGrep.

Intellisense

Система автодополнения (Intellisense), возможно, является лучшей фишкой VS Code. К счастью для нас, ее вполне можно перенести в Vim!

Автодополнение в vim
Автодополнение импортируемой функции, использованной в другом файле в React

В CoC есть собственная система расширений, предоставляющих тот же функционал, что и расширения VS Code. Его легко использовать, есть хорошая документация (это важно).

Примечание: в некоторых старых статьях можно встретить упоминание YouCompleteMe, но, сколько я могу судить, он больше не поддерживается.

Проводник по файловой системе

VS Code, как и большинство современных редакторов кода, имеет проводник. Собственный проводник Vim — netrw — тоже работает, и я видел достаточно статей, где говорилось, что большего и не нужно (например, вот такая статья). Но я считаю, что NERDTree слишком удобен, чтобы от него отказываться.

Интеграция Git

Буду откровенен: большую часть работы с git я выполняю прямо в Iterm. Но в VS Code есть просто отличный функционал для разделения экрана по вертикали и просмотра разницы в файлах. Чтобы получить ту же степень удобства в Vim, используйте плагин fugitive.

git diff в vim
git diff для отдельного файла

Дополнительные плагины, которые вам могут пригодиться

Это те вещи, которыми я пользовался в Visual Studio Code и которые хотел применять и в Vim.

Автозаполнение скобок

Этот симпатичный маленький пакет будет автоматически закрывать все эти надоедливые скобки.

Значки файлов

Добавление значков к файлам, например, в NERDTree.

Prettier

Вы не поверите, но официальная команда Prettier поддерживает плагин для Vim! И это здорово! Кроме того, его очень легко настраивать. По настройке можно почитать вот эту статью (в частности, чтобы настроить работу при автосохранении).

Сниппеты

Возможно вы не знали, но, используя Conquer of Completion, можно импортировать сниппеты VS Code! Чтобы узнать, как это сделать, перейдите по ссыллке.

Вот пакет React-сниппетов, которым я пользуюсь.

Дополнительно

Плагины для Vim обитают в Vim Awesome.

Если хотите посмотреть, как люди пользуются Vim, вот ссылка на Vimcasts (скринкасты).

Итоги

Сейчас я использую в работе только Vim (после того как примерно год изучал его). Сначала я применял этот редактор только для личных проектов, потому что тогда еще не достиг нужного уровня продуктивности в его использовании. Мне все время приходилось прерываться, чтобы посмотреть, как что-то делается. Но 4 месяца назад я полностью оставил VS Code и не планирую к нему возвращаться.

Если вам показалось, что изучать Vim страшно, то вам не показалось. Чтобы его освоить, нужна самодисциплина. Но разве нельзя сказать то же самое о чем угодно в сфере разработки? В моем опыте не было ни одного языка, инструмента, фреймворка, для работы с которыми не потребовалась бы некоторая практика.

Vim это выбор из сферы образа жизни. Чтобы к нему привыкнуть, нужно время, и временами это БУДЕТ раздражать. Но я гарантирую, что со временем этот инструмент существенно улучшит ваш рабочий процесс.

1 КОММЕНТАРИЙ

  1. Почему ycm не поддерживается? Всё работает и проект развивается, насколько я могу судить

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here