Честно говоря, когда я впервые столкнулся с Vim’ом года три назад, хотелось его просто… закрыть. И не мог! Попал в ту самую ловушку, о которой ходят мемы в интернете. Потом, правда, разобрался и теперь использую его почти для всего. Расскажу, что из этого вышло.
Зачем вообще Vim, если есть обычные редакторы?
Ну смотрите. Сначала я работал в gedit’е, потом попробовал nano — вроде норм, простенько и со вкусом. Но когда стал больше времени проводить в терминале (администрирую несколько серверов), понял что постоянно тянуться к мышке — это жесть какая неэффективно.
А Vim… он весь построен на том, что руки лежат на клавиатуре и никуда не убегают. Есть разные «режимы» работы:
- Командный режим — тут ты не печатаешь текст, а управляешь редактором. Перемещаешься по файлу, удаляешь строки, копируешь блоки
- Режим вставки — обычное редактирование, как в блокноте
- Визуальный режим — выделяешь куски текста
- Командная строка — продвинутые команды типа поиска-замены или сохранения
Внимание! Командный режим работает только при английской раскладке. Я об этом забывал первые пару месяцев и бесился, почему ничего не работает.
Как не остаться заложником Vim’а навсегда
Классика жанра — зашел в vim, а выйти не можешь. Вот пошаговка:
- Открываешь файл:
vim example.txt
- Хочешь что-то написать — жмешь
i
(войти в режим вставки) - Пишешь текст
- ОБЯЗАТЕЛЬНО жмешь Esc (возврат в командный режим)
- Пишешь
:wq
и Enter (сохранить и выйти)
Если накосячил и хочешь выйти без сохранения: :q!
и Enter.
Если открыл кучу файлов и хочешь закрыть все разом: :qa!
Базовые команды, без которых никуда
Долго врабатывался в эти комбинации, но оно того стоило:
Перемещение (в командном режиме)
h
,j
,k
,l
— влево, вниз, вверх, вправо (да, не стрелочки!)w
/b
— скакать по словам вперед/назад0
— в начало строки,$
— в конецgg
— в начало файла,G
— в конец15G
— прыгнуть на 15-ю строку
Фишка в том, что перед командами можно ставить цифры. 3j
— вниз на 3 строки, 5w
— на 5 слов вперед.
Редактирование
i
— вставка перед курсоромa
— вставка после курсораo
— новая строка ниже и сразу в режим вставкиO
— новая строка выше
Удаление и копирование
x
— удалить символ под курсоромdd
— снести всю строкуdw
— удалить словоyy
— скопировать строкуyw
— скопировать словоp
— вставить после курсораP
— вставить перед курсором
Поиск
/что-то
— найти «что-то» в текстеn
— следующее совпадениеN
— предыдущее совпадение
Замена
:% s/старое/новое/g
— заменить все вхождения «старое» на «новое» во всем файле
Отмена
u
— отменить последнее действиеCtrl+r
— вернуть отмененное
Мои грабли и как их избежать
Раскладка клавиатуры. Месяца два мучился — то команды не срабатывают, то вместо :wq
получается какая-то белиберда. Оказалось, нужно переключаться на английский перед вводом команд. Есть способы настроить русскую раскладку в vim’е, но проще привыкнуть переключаться.
Режимы. Поначалу постоянно забывал, в каком режиме нахожусь. Начинаешь печатать текст, а он команды выполняет. Или наоборот — хочешь переместиться, а vim пишет буквы. Спасает индикатор внизу экрана и привычка всегда жать Esc перед командами.
Копирование в системный буфер. Если хочешь скопировать из vim’а в браузер или другую программу, обычные yy
и p
не помогут. Нужно использовать "+y
для копирования и "+p
для вставки. Но vim должен быть скомпилирован с поддержкой clipboard’а.
Vimtutor — твой лучший друг
Серьезно, не игнорируйте эту штуку. Просто наберите vimtutor
в терминале. Полчаса интерактивного обучения заменят часы чтения мануалов. Там на практике проходишь все основные команды, включая правильный выход из редактора.
Работа с несколькими файлами
Можно открыть сразу кучу файлов: vim file1.txt file2.txt file3.txt
Переключение между ними:
:n
— следующий файл:prev
— предыдущий файл:buffers
— список всех открытых файлов:buffer 2
— переключиться на второй файл из списка
Мой .vimrc (базовые настройки)
Создал файл ~/.vimrc
с минимальными настройками, которые делают жизнь проще:
set number
set tabstop=4
set shiftwidth=4
set expandtab
syntax on
set hlsearch
set incsearch
Показывает номера строк, настраивает табуляцию, включает подсветку синтаксиса и поиск с подсветкой.
Почему не пожалел о потраченном времени
Да, первые недели были болезненными. Скорость работы упала в разы, постоянно гуглил команды, бесился от того что не могу быстро выйти из редактора.
Но сейчас, спустя пару лет, понимаю что это одно из лучших вложений времени в свои навыки работы с компьютером. Редактирование текста стало намного быстрее, особенно когда нужно внести однотипные изменения в большой файл. На серверах, где нет графических редакторов, чувствую себя как рыба в воде.
Плюс vim (или его основы) есть практически везде в unix-мире. Знание хотя бы базовых команд выхода (:q!
, :wq
) и перемещения может спасти в самый неожиданный момент.
С чего начать
- Запустите
vimtutor
и пройдите его до конца - Попробуйте редактировать простые файлы, привыкните к режимам
- Выучите наизусть команды выхода
:wq
,:q!
,:qa!
- Постепенно добавляйте новые команды в арсенал
- Не пытайтесь освоить все сразу — vim огромен
И помните — если застряли в vim’е и не знаете как выйти, это нормально. Через это прошли все :)