Кратко
Секция статьи "Кратко"Vim — сложный, но очень интересный инструмент. Он позволяет сильно ускорить вашу работу с текстом. В этой статье познакомимся с общими принципами работы в Vim, изучим режимы работы, посмотрим на некоторые команды и их поведение.
Горячие клавиши есть в любом IDE, но Vim можно использовать в любом редакторе, что снимает с вас необходимость изучения шорткатов.
Как войти
Секция статьи "Как войти"Все мы с вами сталкиваемся с Vim: при создании коммита или при работе на удалённом сервере. Однако, мало кто задумывался почему этот инструмент настолько популярен. Его поклонники до сих пор существуют и продвигают Vim в массы.
Общая концепция
Секция статьи "Общая концепция"Основная идея Vim заключается в том, что редактирование текста (в нашем случае кода) более сложная задача чем его создание. С нуля писать просто — сосредоточился и тыкаешь правильные кнопочки в правильной последовательности. А для редактирования нужно понять, куда вносить правки, навести мышь на эту часть кода, начать удалять буквы удерживая Backspace, и только после этого можно будет вводить другой код. Повторить до успешного результата.
Однако перемещение и редактирование может происходить гораздо быстрее в случае, если не придётся трогать мышь или тачпад. Подумал и бац, уже редактируешь код в правильном месте. Магия вне Хогвартса — не иначе.
Принцип команд
Секция статьи "Принцип команд"Большинство команд при работе в Vim это обычные глаголы и существительные в английском языке.
- Удалить слово: delete word — dw.
- Заменить два слова: change 2 word — c2w.
- Ввести текст: insert — i.
- Удалить всё в скобках: delete inside ( — di(.
Иногда важно расположение курсора для той или иной команды. Например, если курсор находится в середине слова, то dw отработает не совсем ожидаемо: удалится часть слова после курсора включая букву под курсором. Чтобы достичь желаемого поведения, достаточно вспомнить, что мы находимся в середине слова и поэтому нам понадобиться команда diw.
Клавиши hjkl
Секция статьи "Клавиши hjkl"Клавиши hjkl — это основные команды для движения по открытому файлу в визуальном режиме (подробнее о режимах Vim поговорим ниже). Использование именно этих клавиш это историческая особенность. Когда Билл Джой создавал редактор vi, стрелочки на его машине ADM-3 были именно на этих кнопках.
- h — ←
- j — ↓
- k — ↑
- l — →
Режимы
Секция статьи "Режимы"Существует 5 основных режимов для работы в Vim. Большая часть из них создана для редактирования текста тем или иным способом.
- Режим normal — позволяет перемещаться по файлу используя кнопки, которые мы изучили ранее.
- i — insert, режим ввода текста.
- v — visual, режим выделения текста.
- : — command, режим ввода команд bash.
- R — replace, режим замены текста перед курсором.
Esc — выйти из любого режима и вернуться в нормальный режим.
Undo-Redo
Секция статьи "Undo-Redo"Все мы совершаем ошибки и хотим их изменить. В Vim это возможно одним движением.
Для отмены последнего редактирования используется кнопка u (undo). Для отмены отмены редактирования Ctrl r (redo).
Как же выйти из Vim?
Секция статьи "Как же выйти из 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. Это инструмент позволяет создать шаблон для ваших инструментов и развернуть его на любой машине, будь то рабочая, сервер или новый персональный компьютер.
Всего три команды и ваше привычное окружение там где вы пожелаете:
git clone <репозиторий с вашими дот
- файлами> cd dotfiles
. / install
С примером конфигурации Vim, tmux, скриптов вы можете ознакомиться в моём .dotfiles. Он довольно обширный, но разделён на логические части. Подглядывайте и копируйте себе полезные для вас команды и инструменты.