Как я уже упоминал в своем посте о надвигающейся смерти Atom, я обычно использую VS Code для большей части моей профессиональной работы по программированию, а Vim — для большей части моего личного кодирования. Это заставило меня немного больше задуматься о том, почему именно так; почему я использую VS Code профессионально, а Vim лично?
Сторона Vim
Что касается Vim, то мне это нравится, потому что по большей части оно простое и компактное. Тем не менее, экосистема плагинов означает, что я обычно могу добавлять плагины для большинства функций, которые мне могут понадобиться, от поддержки синтаксиса, который недоступен по умолчанию, до настройки интерфейса. Vim также вездесущ, так как он (или, по крайней мере, Vi) установлен почти везде по умолчанию. Независимо от того, работаю ли я над чем-то на своем локальном компьютере или если я exec помещен в контейнер, у меня может быть более или менее одинаковый опыт редактирования. Даже с личными проектами Vim — это то, что я могу использовать практически везде. Он есть на моем ноутбуке с Fedora, и на VPS, которым я пользуюсь, он тоже есть, если я хочу написать какой-нибудь код с моего iPad — это отдельный пост в другой раз.
При работе с моего ноутбука также приятно не переключаться между терминалом и редактором; Я просто переключаюсь между вкладками в одном и том же приложении. Если мне нужно просмотреть 2, 3 или даже 4 файла одновременно, я могу быстро запустить tmux для этого.
Конечно, самым большим преимуществом является именно скорость редактирования, которую предлагает Vim. Хотя я признаю, что кривая обучения немного крутая по сравнению с чем-то вроде VS Code или nano — я знаю пугающее количество системных администраторов, которые до сих пор используют nano каждый раз, когда подключаются по SSH к машине, которой они управляют — отдача того стоит. Поскольку я использовал Vim в той или иной степени более десяти лет, я могу редактировать с его помощью намного быстрее, чем с чем-либо еще. Точно так же это также означает, что моя скорость не зависит от того, есть ли на клавиатуре, которую я использую, клавиши Home, End, Page Up и Page Down, что является следующей лучшей вещью, которую я обнаружил при использовании модального окна Vim. редактор.
Сторона кода VS
Что касается VS Code, то основным драйвером для меня является тот факт, что мне легко открыть целую папку и быстро переключаться между всеми файлами, содержащимися в этом конкретном проекте. Хотя в большинстве моих небольших проектов это не проблема, в последнее время я работаю со значительно большим количеством файлов за раз (и переключаюсь между ними, когда исправляю крайне неработающий код), чем обычно.
Точно так же IntelliSense, который VS Code предлагает для различных языков, особенно для Python, довольно удобен. В настоящее время я работаю с Python в качестве основного языка, хотя раньше я использовал в основном PowerShell и Groovy, поэтому наличие подсказок по параметрам, методам и т. д. весьма полезно.
Как я упоминал в другом посте, в VS Code есть расширение Vim для добавления модального редактора Vim, но по какой-то причине оно мне не очень понравилось. Хотя это все еще было очень полезно для таких вещей, как использование клавиатуры, которая не имеет полного набора клавиш, я в конечном итоге почувствовал, что я все еще не так эффективен, поскольку я так регулярно тянулся к мыши для других вещей. Я буду первым, кто признает, что это может быть просто умственно с моей стороны. 🙃
Переключение на Вим
Имея все это в виду, я решил, что хочу дать Vim еще один шанс в качестве моего «единственного» редактора. Хотя IntelliSense хорош, я думаю, что есть что-то, что заставило меня потратить немного умственных усилий на то, чтобы вспомнить некоторые аспекты Python, вместо того, чтобы использовать IntelliSense; Думаю, это могло бы принести мне пользу. В таких вещах, как имена функций и переменных, мне может помочь автозаполнение практически для любого редактора, включая Vim.
Это просто оставило работу с несколькими файлами, с чем я раньше боролся. Я знал, что у Вима есть вкладки, но я никогда особо в них не разбирался… очевидно. Поэтому я решил немного покопаться и попрактиковаться в нескольких моих текущих проектах. Мне не потребовалось много времени, чтобы понять, что я могу легко открыть новую вкладку с помощью следующей команды в Vim:
:tabnew {file_path}
Переключение между вкладками сначала было немного более громоздким, поскольку я использовал:
:tabn
… для следующей вкладки и…
:tabp
… для предыдущей вкладки. Это немного больше, чем мне хотелось бы. Однако я узнал, что также могу:
gt
… для следующей вкладки в обычном режиме и…
gT
… для предыдущей вкладки. Намного лучше! Тем не менее, это все еще было немного громоздко, когда я обнаружил, что у меня открыто более 3 вкладок, поскольку я не хотел нажимать эти клавиши несколько раз. Vim предлагает возможность ввода:
#gt
… из обычного режима, где # — это номер нужной вкладки, начиная с 1. Это было намного быстрее, потому что я мог перейти именно к той вкладке, которая мне нужна. Тем не менее, это все еще было немного неуклюжим, потому что при переходе к 5+ вкладкам не всегда было очевидно, какое число мне нужно, и необходимость быстро считать казалась глупой. После некоторых дополнительных поисков я нашел эту маленькую изящную функцию, которую я добавил в свой файл .vimrc. Он отобразит номер на вкладке, так что мне даже не придется думать, какой из них мне нужен; Я могу просто быстро нажать цифру, за которой следуют клавиши g и t.
Расширения
Я чувствую, что было бы упущением, если бы я также не упомянул некоторые расширения Vim, которые были очень важны для моего рабочего процесса. Естественно, некоторые из них являются результатом моих конкретных рабочих функций, тогда как другие, вероятно, будут универсально полезны для всех, кто использует Vim.
- Pathogen: это первый кивок от меня, так как это менеджер плагинов, который я использую для добавления всего остального в Vim! Доступно несколько менеджеров плагинов, но я всегда находил Pathogen чрезвычайно простым и надежным, поэтому я не рискнул попробовать какие-либо другие.
- Авиакомпания: потрясающий плагин для отображения информации о статусе открытого в данный момент файла. Хотя он удобен сам по себе, он действительно удобен с…
- Fugitive: Fugitive интегрируется с Airline для отображения информации Git об открытом в данный момент файле. На какой ветке я нахожусь, есть ли изменения, которые нужно зафиксировать, и т. д. — все это доступно на панели Авиакомпания благодаря Fugitive.
- OneDark: это моя любимая тема на данный момент, основанная на теме по умолчанию для Atom, который скоро уйдет. Мне очень нравится, как он выглядит, хотя большую часть времени я провел с Vim, используя потрясающую тему Дракула.
- Dockerfile: как человеку, не имеющему большого опыта работы с Docker, подсветка синтаксиса этого плагина просто потрясающая, поскольку позволяет мне узнать о синтаксических ошибках до того, как я на самом деле попытаюсь запустить сборку.
- Groovy: в последнее время я уже не так много пишу на Groovy, как раньше, но когда дело доходит до этого, мне нравится иметь подсветку синтаксиса. Несмотря на то, что он был заархивирован, он по-прежнему хорошо работает в текущем выпуске Groovy (4.0.3 на момент написания этой статьи).
- Markdown: подсветка синтаксиса Vim по умолчанию приличная, но есть некоторые случаи, когда он немного запутается, например, с кавычками. Наряду с исправлением этих проблем, этот плагин также позволяет сворачивать разделы файла Markdown, что на удивление удобно при работе с более длинными документами.
- Terraform: Как и в случае с Docker, я не особо разбираюсь в Terraform, поэтому наличие плагина, помогающего мне с подсветкой синтаксиса, который сообщит мне, что я сделал что-то не так, до фактического выполнения чего-либо, очень полезен.
- WakaTime: это в основном для развлечения, просто для отслеживания того, сколько времени я трачу на написание кода, но это также полезно для случаев, когда мне нужно отслеживать, сколько времени я потратил на конкретный проект или работа для конкретного клиента на моей работе. .
Это плагины, которые, как правило, попадают в мою категорию «обязательных». Хотя я провожу большую часть своего времени, работая с Python, я обнаружил, что подсветка синтаксиса Python по умолчанию более чем адекватна, поэтому я не пытался искать что-то более сложное. Я постараюсь не забыть обновить этот пост в будущем, если наткнусь на что-то еще!