VIM
Vim — текстовый редактор, который работает прямо в терминале и на экран выводит только текст: ни кнопок, ни меню, ни мыши (по умолчанию). Именно в этом его сила и его слава «неудобного редактора, из которого не выйти».
Он полноэкранный: занимает весь терминал, переключает его в режим прямого ввода и возвращает обратно, когда вы выходите. Поэтому Vim и живёт в разделе «Терминал и оболочка» — он ровно тот пример программы, которая с терминалом работает вплотную.
Модальность: главное, что надо понять
Всё остальное в Vim — следствие одного решения: клавиши означают разное в зависимости от режима.
| Режим | Что делают клавиши | Как войти |
|---|---|---|
| Обычный (normal) | Двигают курсор, удаляют, копируют — это «режим команд» | Esc из любого другого |
| Вставки (insert) | Набирают текст, как в обычном редакторе | i, a, o |
| Визуальный (visual) | Выделяют текст | v, V, Ctrl+v |
| Командный | Вводят команды после : |
: |
Ключевая мысль: обычный режим — основной, а вставка нужна время от времени. Люди, которые считают Vim неудобным, обычно пытаются в нём постоянно печатать: в обычном режиме набранное превращается в команды, и получается каша.
Первые шаги: сохранить и выйти
$ vim file.txt # открыть файл
$ vim # открыть без файла
Внутри:
| Клавиши | Действие |
|---|---|
i |
Войти в режим вставки (перед курсором) |
Esc |
Вернуться в обычный режим — нажимать, когда не понимаете, что происходит |
:w |
Сохранить |
:q |
Выйти |
:wq или ZZ |
Сохранить и выйти |
:q! |
Выйти без сохранения |
Аварийный случай «застрял и не могу выйти» решается именно Esc, затем :q! и Enter. Спасает и Ctrl+c, если Esc почему-то съедается терминалом.
Движение — вместо стрелок
Стрелки работают, но смысл Vim в том, что руки не уходят с основного ряда:
| Клавиши | Куда |
|---|---|
h j k l |
влево, вниз, вверх, вправо |
w / b |
на слово вперёд / назад |
0 / $ |
начало / конец строки |
gg / G |
начало / конец файла |
:42 |
строка 42, :42 + G — то же |
/текст, затем n |
поиск, затем следующее совпадение |
% |
на парную скобку |
{ / } |
на пустую строку вперёд / назад |
Привычка «одна буква — одно движение» экономит не секунды, а внимание: за час работы это сотни переключений на стрелки, которые здесь не нужны.
Правка, которая повторяется
| Клавиши | Действие |
|---|---|
x / dd |
удалить символ / строку |
dw / diw |
удалить слово / слово без пробелов вокруг |
ciw |
изменить слово целиком (удалить и сразу вставить) |
yy / p |
скопировать строку / вставить после |
u / Ctrl+r |
отменить / вернуть отменённое |
. |
повторить последнее изменение |
Точка — самый недооценённый приём: правку можно повторить одним нажатием, а вместе с поиском (/, n, .) она превращается в «сделать то же самое в следующем месте».
Команды после :
Это старые команды редактора ex, которые живут внутри Vim:
:s/старое/новое/ " заменить в текущей строке
:%s/старое/новое/g " во всём файле
:%s/старое/новое/gc " с подтверждением каждого
:set number " включить нумерацию строк
:set expandtab " отступы пробелами
:e другой_файл " открыть другой файл
:sp / :vsp " разделить окно по горизонтали / вертикали
:help тема " встроенная справка — работает без сети
:help — не формальность: у Vim полностью документированная встроенная справка, и :help ciw объяснит команду точнее любой статьи.
Настройки: ~/.vimrc
Настройки — обычный текстовый файл, который Vim читает при запуске. Минимум, из-за которого к Vim возвращаются:
set number " нумерация строк
set tabstop=4 " ширина табуляции
set shiftwidth=4 " ширина автоотступа
set expandtab " табуляция пробелами
set smartindent " умные отступы
set ignorecase " поиск без учёта регистра
set smartcase " ...но с большой буквы — с учётом
set hlsearch " подсветка найденного
Подробный разбор этих опций — на отдельной странице: «Отступы».
Работа с кодом
Vim хорошо стыкуется с внешними инструментами, и это его вторая жизнь — им пользуются как редактором кода:
ctags— строит файлtagsс определениями функций; после этого переход к определению — одна команда. Разбор: «Перемещение по функциям».:makeвнутри Vim запускает сборку и показывает ошибки в отдельном окне.- Плагины ставят менеджерами (например,
vim-plug), файлы которых лежат в~/.vim/. - Neovim (
nvim) — современная ветка с тем же языком команд: многие плагины и настройки переносятся почти без изменений. Если выбираете сегодня, посмотрите и его.
Как учиться
$ vimtutor # встроенный интерактивный урок, ~30 минут
vimtutor — лучший способ начать: он ведёт по упражнениям прямо в редакторе, не требуя запоминать список клавиш заранее. Если хочется игровой формы — есть браузерная игра https://vim-adventures.com/: в ней движение по лабиринту делается клавишами Vim.
Книги
Копии у нас, чтобы не зависеть от чужих сайтов:
- Hacking Vim 7.2 — приёмы и настройка.
- Vi и Vim (на русском) — справочник на русском языке.
Источники
- Встроенная справка:
:help,:help user-manual,:help options— сама по себе источник, доступный без сети. man 1 vim,man 1 vimtutor,man 1 ctags.- Книги из раздела «Книги» — они же и первоисточники по приёмам.
Что ещё не проверено
- Команды и режимы описаны по встроенной справке и документации; в моём окружении Vim не установлен, поэтому нажатия я не проверял. Проверено другое: файлы книг отдаются с сайта (обе ссылки отвечают 200), а страницы «Отступы» и «Перемещение по функциям» — на месте.
Комментарии
Пока комментариев нет.