Клавиша / esc

Как войти в Vim

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

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

Кратко

Скопировано

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

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

Как войти

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

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

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

Скопировано

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

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

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

Скопировано

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

  • Удалить слово: delete word — dw.
  • Заменить два слова: change 2 word — c2w.
  • Ввести текст: insert — i.
  • Удалить всё в скобках: delete inside ( — di(.

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

Клавиши hjkl

Скопировано

Клавиши hjkl — это основные команды для движения по открытому файлу в визуальном режиме (подробнее о режимах 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 это глаголы и существительные английского языка. Сохранение и выход не исключение. Эти операции совершаются в режиме команд. Войти в этот режим можно через кнопку :.

  • w — write, сохранить;
  • q — quit, выйти;
  • 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. Он довольно обширный, но разделён на логические части. Подглядывайте и копируйте себе полезные для вас команды и инструменты.