Клавиша / esc

Как войти в Vim

Введение в Vim и его основные принципы работы.

Время чтения: 6 мин

Кратко

Скопировано

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

Горячие клавиши есть в любой IDE, но Vim можно использовать в любом редакторе, что снимает с вас необходимость изучения шорткатов.

Как войти

Скопировано

Все мы с вами сталкиваемся с Vim: при создании коммита или при работе на удалённом сервере. Однако мало кто задумывается почему этот инструмент настолько популярен. Его поклонники до сих пор существуют и продвигают Vim в массы.

Как выйти

Скопировано
Спойлер
Кадр из фильма «Прибытие». Девушка показывает пришельцам табличку с надписью «Esq :q»

Если вы никогда не работали в Vim, то с большой долей вероятности не сможете из него выйти сами. Почему так? У Vim своя идеология, сильно отличающаяся от обычных текстовых редакторов. Но если вы её поймёте (и примете), Vim может стать вашим любимым редактором.

Общая концепция

Скопировано

Основная идея Vim заключается в том, что редактирование текста (в нашем случае кода) — более сложная задача, чем его создание. С нуля писать просто — сосредоточился и тыкаешь правильные кнопочки в правильной последовательности. А для редактирования нужно понять, куда вносить правки, навести мышь на эту часть кода, начать удалять буквы, удерживая Backspace, и только после этого можно будет вводить другой код. Повторять до достижения успешного результата.

Однако перемещение и редактирование может происходить гораздо быстрее в случае, если не придётся трогать мышь или тачпад. Подумал и — бац — уже редактируешь код в правильном месте. Магия вне Хогвартса, не иначе.

Принцип команд

Скопировано

Большинство команд при работе в Vim это обычные глаголы и существительные в английском языке.

  • удалить слово, delete word — dw;
  • заменить два слова, change 2 word — c2w;
  • ввести текст, insert — i;
  • удалить всё в скобках, delete inside ( — di(.

Иногда важно расположение курсора для той или иной команды. Например, если курсор находится в середине слова, то dw отработает не совсем ожидаемо: удалится часть слова после курсора, включая букву под курсором. Чтобы достичь желаемого поведения, достаточно вспомнить, что мы находимся в середине слова и поэтому нам понадобится команда diw.

Клавиши hjkl

Скопировано

Клавиши h, j, k, l — это основные команды для движения по открытому файлу в визуальном режиме (подробнее о режимах Vim поговорим ниже). Использование именно этих клавиш это историческая особенность. Когда Билл Джой создавал редактор vi, стрелочки на его машине ADM-3 были именно на этих кнопках.

  • h — ←,
  • j — ↓,
  • k — ↑,
  • l — →.
Схема клавиатуры со стрелками, нанесёнными на клавиши h, j, k, l

Режимы

Скопировано

Существует 5 основных режимов для работы в Vim. Большая часть из них создана для редактирования текста тем или иным способом.

  1. Режим normal — позволяет перемещаться по файлу используя кнопки, которые мы изучили ранее.
  2. iinsert, режим ввода текста.
  3. vvisual, режим выделения текста.
  4. :command, режим ввода команд bash.
  5. Rreplace, режим замены текста перед курсором.

Esc — выйти из любого режима и вернуться в нормальный режим.

Undo-Redo

Скопировано

Все мы совершаем ошибки и хотим их изменить. В Vim это возможно одним движением.

Для отмены последнего редактирования используется кнопка u (undo). Для отмены отмены редактирования Ctrl r (redo).

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

Скопировано

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

  • write, сохранить — w;
  • quit, выйти — q;
  • выйти без сохранения изменений — q!;
  • выйти и сохранить — wq.

Навигация по тексту

Скопировано

Передвигаться по тексту в Vim можно очень быстро. За пару комбинаций клавиш можно перепрыгнуть на место в коде, о котором вы подумали, и тут же начать его редактировать. Все комбинации работают в режимах normal и visual.

Прыгаем по словам

Скопировано

Если слово не содержит пунктуационный знак в конце:

  • переместить курсор вперёд на начало следующего слова — w;
  • переместить курсор вперёд на конец слова — e;
  • переместить курсор назад на начало слова — b.

Если слово содержит пунктуационный знак в конце:

  • курсор вперёд на начало следующего слова — W;
  • курсор вперёд на конец слова — E;
  • курсор назад на начало слова — B.

Начало и конец строки

Скопировано
  • в начало строки — 0;
  • в начало строки на первый не пробельный символ — ^;
  • в конец строки — $.

Начало и конец файла

Скопировано
  • в самое начало файла — gg;
  • в конец файла — G.

Перейти на конкретную строку

Скопировано
  • перейти на строку 32 — :32.

Поиск по слову

Скопировано
  • найти слово param — /param.

Если совпадений несколько, то переход к следующему совпадению — n (next), к предыдущему — N.

Перемещение по файлу

Скопировано
  • вверх на половину экрана — Ctrl u;
  • вверх на весь экран — Ctrl b;
  • вниз на половину экрана — Ctrl d;
  • вниз на весь экран — Ctrl f.

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

  • вверх к следующей пустой строке — {;
  • вниз к следующей пустой строке — };
  • вернуться к прошлому месту курсора — Ctrl o;
  • обратное команде выше, к прошлому месту курсора — Ctrl i.

Заключение

Скопировано

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

На практике

Скопировано

Анатолий Коробов советует

Скопировано

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

Всего три команды и ваше привычное окружение развернётся там, где вы пожелаете:

  1. git clone <репозиторий с вашими дот-файлами>.
  2. cd dotfiles.
  3. ./install.

С примером конфигурации Vim, tmux, скриптов вы можете ознакомиться в моём .dotfiles. Он довольно обширный, но разделён на логические части. Подглядывайте и копируйте себе полезные для вас команды и инструменты.