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

Перевод статьи «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 это выбор из сферы образа жизни. Чтобы к нему привыкнуть, нужно время, и временами это БУДЕТ раздражать. Но я гарантирую, что со временем этот инструмент существенно улучшит ваш рабочий процесс.

[customscript]techrocks_custom_after_post_html[/customscript]

[customscript]techrocks_custom_script[/customscript]

9 комментариев к “Как пользоваться Vim, взяв все лучшее из Visual Studio Code”

  1. Аноним

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

  2. Аноним

    Я очень прошу прощения. Я наткнулся на вашу статью и задался вопросом. судя по вашим расчётом за 5 часов написания кода вы тратите 3 лишние минуты при использовании Мышки и VScode (не используя горячие клавиши VScod’a) ок. Вы потратили примерно год на изучение то есть вы потратили примерно 43.800 минут на освоение данного функционала в Vim при условии того что вы занимались им по 2 часа в день весь год. Я очень прошу прощения, но мне кажется что попытка сэкономить время встала дороже, так как если учесть что вы работаете к примеру 365 дней по 5 часов и тратите ну скажем по 10 минут в день дополнительно на жестикуляции регулировщика, то выйдет около 3.650 минут. В итоге на изучение VIM было потрачено 43.800 минут а просто использование мыши и vscode 3.650. Даже если смотреть в вопросе долгосрочной перспективы. на 10 лет вперёд VScode 36.500 за десять лет. а VIM встаёт под вопросом о необходимости поиска дополнительных плагинов и тд. Но даже так потраченное время превышает эффективно? Vim знать важно и нужно! Пользоваться им уметь обязательно! А вот как основной инструмент… мне кажется его сложно использовать. Во всяком случае он подойдёт не под все задачи и даже с большим количеством плагинов он не будет столь удобен как VScode. Но это исключительно моё мнение. Мнение неопытного человека.

    1. К тому же вим на моей слабой машине с 12 озу и i5 3-го поколения справляется со всем на ура. Никаких пролагов и подобной дичи, что есть в vs code.

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

  3. Прохожий

    1. Пользоваться продукцией от Microsoft — вообще дурной тон в настоящем программировании
    2. Наибольшее количество времени чаще всего теряется при неверном проектировании и написании кода с ошибками. И экономия по 3 минуты в день на прекращении работы с мышкой — это мизер по сравнению с остальными затратами.

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх