С Вимом у меня долгое время были сладко-горькие отношения.

За последние пару лет я несколько раз пытался изучить Vim. Каждый раз я отказывался от этого. Вместо этого я использовал свой основной текстовый редактор (обычно Atom).

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

Пройдя пять этапов горя, я решил укусить пулю и попробовать (снова) изучить Vim. На этот раз я заставил себя использовать Vim и только Vim.

Знаю - легко мог бы перейти на более интуитивно понятный редактор, такой как Sublime. Или я мог бы даже использовать полноценную IDE вроде IntelliJ.

Вместо этого я подумал: «Что за черт?». Вот некоторые вещи, которые я узнал.

Изучение основ

Если вы новичок, Vim - это, казалось бы, архаичный текстовый редактор. Его корни уходят в программу под названием Vi, появившуюся в 1970-х годах.

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

Вместо этого Vim использует режимы. Можно использовать два основных режима:

  • Нормальный режим: это режим, который вы используете, когда перемещаетесь по файлам или редактируете / манипулируете ими. В этом режиме можно делать все, что не связано с вводом нового содержимого. Большинство команд Vim вводятся в этом режиме.
  • Режим вставки: режим вставки позволяет вводить новый текст. В этом режиме Vim ведет себя больше как «обычный» текстовый редактор, такой как Atom или Sublime. Без использования мышки, конечно.

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

Vim обычно используется внутри эмулятора терминала. Однако существуют отдельные дистрибутивы. Он доступен практически во всех системах Unix и Linux. Дедушка Vim, Vi, является частью спецификации UNIX. Поэтому он предустановлен на всех соответствующих системах.

Сочетаемость

«Возможность компоновки» - это во многом то, что отличает Vim от других редакторов. Это дает Vim собственный особый язык.

Он вводит понятие существительных и глаголов в контексте редактирования текста и манипуляций с ним.

Глаголы описывают действия, которые вы можете предпринять (такие как удаление, изменение, перемещение).

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

Некоторые из обычно используемых существительных и глаголов включают:

Verbs 
d: delete
c: change (overwrite)
y: yank (copy)
>: indent
<: unindent
Actions
h,j,k,l: left, down, up, right
w: next word
b: previous word
0: start of line
$: end of line
i: inside (excluding the following character)
a: around (including the encasing characters)

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

Например, чтобы d выбрать слово, введите комбинацию клавиш dw.

Чтобы d удалить 2 недели с текущей позиции, введите d2w.

Чтобы удалить с текущей позиции до конца строки, введите d$.

Чтобы d удалить все в скобки, введите di(. И это продолжается.

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

Вим вызывает привыкание

Да, я знаю. Это клише. Но потерпите меня.

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

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

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

Фактически, в какой-то момент я подумывал поэкспериментировать с этим расширением, чтобы включить привязку клавиш Vim при просмотре веб-страниц. Я знаю!

К счастью, сообщество программистов это понимает. В большинстве основных текстовых редакторов есть способы включения привязки клавиш Vim. Это избавляет «виммеров» от страданий, давая им лучшее из обоих миров.

Даем Vim шанс на бой

Ключевое улучшение Vim - это просто отказ от использования чего-либо другого. Вместо этого вы должны заставить себя делать все как в Vim.

Например - при редактировании файлов в Vim старайтесь не прибегать к своим старым привычкам. Большинство людей, начиная с самого начала, стараются держаться как можно дальше от «нормального режима».

Вместо этого они стараются проводить как можно больше времени в «режиме вставки ». В этом режиме легко чувствовать себя как дома. Это позволяет вам редактировать файл, не узнавая ничего нового. Но это ошибка.

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

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

Поищи в Гугле. Запомни это. Добавьте его в свой арсенал. Таким способом выучить новые команды намного проще, чем читать список команд и надеяться, что вам понадобится использовать одну из них.

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

Цените (?) Современные редакторы

Еще одна важная причина, по которой многие люди избегают Vim, - это, казалось бы, «скудный» характер всего этого.

По умолчанию в Vim нет плагинов или полезных функций. И то, что Vim считает «полезным», вероятно, сильно отличается от того, что программисты, привыкшие к современным IDE, сочли бы «полезным».

Vim поставляется с базовой подсветкой синтаксиса (которая по умолчанию отключена). Нумерации строк нет (опять же, ее нужно включить отдельно).

Неудивительно, что такие вещи, как:

  • интеграция с Git по умолчанию
  • Автоматическое завершение кода
  • автоматическое завершение брекетинга
  • фрагменты кода
  • индивидуальные цветовые схемы

… Не поставляются с предустановленным Vim.

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

И в этом аргументе есть свои достоинства. У Vim есть свои ограничения.

Но с другой стороны - даже если вы цените то, что предоставляют современные IDE, и работу, которая идет на их создание, - вы также понимаете, что большинство IDE (и даже скромные редакторы, такие как Atom) приносят с собой много лишнего.

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

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

Во многих случаях использование полноценной IDE имеет смысл. Расширенные функции могут намного перевесить любые преимущества, которые вы получаете от использования Vim.

Но это то, что вам нужно выяснить самостоятельно.

Несмотря на простоту использования Vim, у него есть процветающая экосистема плагинов.

В Vim есть плагины почти для всего, что вы можете делать с другими редакторами. Вам просто нужно выяснить, что вам нужно.

Что меня удивило, так это то, как далеко я могу зайти с помощью всего лишь нескольких плагинов. Моя установка Vim в настоящее время состоит из пяти или шести «важных» надстроек. Я действительно не чувствую, что что-то упускаю.

Vim не идеален. И точно не для всех.

Но, по крайней мере, узнайте достаточно о Vim на случай, если вы случайно откроете его и не поймете, как выйти…! ;)