Кратко
СкопированоVim — сложный, но очень интересный инструмент. Он позволяет сильно ускорить вашу работу с текстом. В этой статье познакомимся с общими принципами работы в Vim, изучим режимы работы, посмотрим на некоторые команды и их поведение.
Горячие клавиши есть в любой IDE, но Vim можно использовать в любом редакторе, что снимает с вас необходимость изучения шорткатов.
Как войти
СкопированоВсе мы с вами сталкиваемся с Vim: при создании коммита или при работе на удалённом сервере. Однако мало кто задумывается почему этот инструмент настолько популярен. Его поклонники до сих пор существуют и продвигают Vim в массы.
Как выйти
СкопированоСпойлер
Если вы никогда не работали в 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 — →.
Режимы
СкопированоСуществует 5 основных режимов для работы в Vim. Большая часть из них создана для редактирования текста тем или иным способом.
- Режим normal — позволяет перемещаться по файлу используя кнопки, которые мы изучили ранее.
- i — insert, режим ввода текста.
- v — visual, режим выделения текста.
- : — command, режим ввода команд bash.
- R — replace, режим замены текста перед курсором.
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. Этот инструмент позволяет создать шаблон для ваших инструментов и развернуть его на любой машине, будь то рабочая, сервер или новый персональный компьютер.
Всего три команды и ваше привычное окружение развернётся там, где вы пожелаете:
git clone <репозиторий с вашими дот
.- файлами> cd dotfiles
..
./ install
С примером конфигурации Vim, tmux, скриптов вы можете ознакомиться в моём .dotfiles. Он довольно обширный, но разделён на логические части. Подглядывайте и копируйте себе полезные для вас команды и инструменты.