- Шпаргалка по Vim
- Режим вставки — вставка/добавление текста
- Редактирование
- Выделение текста (визуальный режим)
- Визуальные команды
- Регистры
- Метки
- Макросы
- Вырезать и вставить
- Выход и сохранение
- Поиск и замена
- Поиск в нескольких файлах
- Сворачивание
- Работа с несколькими файлами
- Вкладки
- Как отсюда выйти: шпаргалка по Vim
- Основы
- Выход из Vim
- Навигация
- Изменение текста
- Выделение текста
- Копирование, удаление, вставка
- Отмена и восстановление последнего изменения
- Работа с файлом
- Поиск и замена
- Подсветка синтаксиса и отступы
- Вкладки
- Разделённый экран
- Настройка Vim: файл .vimrc
- Полезные ресурсы
Шпаргалка по Vim
Совет: Добавьте число перед командой перемещения курсора для того, чтобы повторить её. Например, 4j перемещает курсор на 4 строки вниз.
Режим вставки — вставка/добавление текста
- i — вставка перед курсором
- I — вставка в начало строки
- a — вставка (добавление) после курсора
- A — вставка (добавление) в конец строки
- o — добавление новой строки под текущей
- O — добавление новой строки над текущей
- ea — вставка (добавление) после конца слова
- Esc — выход из режима вставки
Редактирование
- r — заменить один символ
- J — присоединить нижнюю строку к текущей
- cc — заменить всю строку
- cw — заменить всё текущее слово
- c$ — заменить до конца строки
- s — удалить символ и заменить текст
- S — удалить строку и заменить текст (то же что cc)
- xp — переставить две буквы (удалить и вставить)
- u — отменить
- Ctrl + r — применить последнее отменённое изменение
- . — повторить последнюю команду
Выделение текста (визуальный режим)
- v — включить режим выделения текста, выделить строки, затем выполнить команду (например, y-копирование)
- V — включить построчный режим выделения
- o — переместиться на другой конец выделенной области
- Ctrl + v — включить режим выделения блоков
- O — переместить на другой угол блока
- aw — выделить слово
- ab — блок в ()
- aB — блок в <>
- ib — внутренний блок в ()
- iB — внутренний блок в <>
- Esc — выйти из режима выделения текста
Визуальные команды
Регистры
- :reg — показать содержимое регистров
- «xy — поместить содержимое в регистр x
- «xp — вставить содержимое регистра x
Совет: Содержимое регистров сохраняется в ~/.viminfo, и будет восстановлено при следующем запуске vim.
Метки
- :marks — список меток
- ma — установить метку A на текущей позиции
- `a — переместиться к метке A
- y`a — скопировать до метки A
Макросы
- qa — записать макрос A
- q — остановить запись макроса
- @a — run macro a
- @@ — выполнить последний макрос
Вырезать и вставить
- yy — скопировать строку
- 2yy — скопировать 2 строки
- yw — скопировать слово
- y$ — скопировать до конца строки
- p — вставить буфер обмена после курсора
- P — вставить буфер обмена перед курсором
- dd — удалить (вырезать) строку
- 2dd — удалить (вырезать) 2 строки
- dw — удалить (вырезать) слово
- D — удалить (вырезать) до конца строки
- d$ — удалить (вырезать) до конца строки
- x — удалить (вырезать) символ
Выход и сохранение
- :w — сохранить файл, но не выходить
- :w !sudo tee % — сохранить файл с sudo
- :wq либо 😡 либо ZZ — сохранить файл и выйти
- :q — выйти (терпит неудачу в случае несохраненных изменений)
- :q! либо ZQ — выйти и потерять несохраненные изменения
Поиск и замена
- /pattern — поиск шаблона
- ?pattern — обратный поиск шаблона
- \vpattern — ‘very magic’ режим: все не алфавитно-цифровые символы интерпретируются как специальные (экранирование не требуется)
- n — повторить поиск в том же направлении
- N — повторить поиск в обратном направлении
- :%s/old/new/g — заменить все вхождения шаблона в файл на указанное значение
- :%s/old/new/gc — заменить все вхождения шаблона в файл на указанное значение с подтверждением
- :noh — отключить подсвечивание результатов поиска
Поиск в нескольких файлах
- :cn — переместиться к следующему совпадению
- :cp — переместиться к предыдущему совпадению
- :copen — открыть окно со списком результатов
Сворачивание
- zf#j — создает свертку от текущей позиции до # строк вниз
- zf/подстрока — создает свертку от текущей позиции и до первой найденной подстроки
- v/V и zf — выделение блока и создание свертки
После закрытия Vim все свертки забываются, для сохранения сверток в открытом файле используется команда :mkview , для загрузки — :loadview (подробнее).
Работа с несколькими файлами
- :e file — редактировать файл в новом буфере
- :bnext либо :bn — перейти к следующему буферу
- :bprev либо :bp — перейти к предыдущему буферу
- :bd — удалить буфер (закрыть файл)
- :ls — список всех открытых буферов
- :sp file — открыть файл в новом буфере и разделить окно
- :vsp file — открыть файл в новом буфере и вертикально разделить окно
- Ctrl + ws — разделить окно
- Ctrl + ww — переключение окон
- Ctrl + wq — закрыть окно
- Ctrl + wv — разделить окно вертикально
- Ctrl + wh — переместить курсор в левое окно (вертикально разделение)
- Ctrl + wl — переместить курсор в правое окно (вертикальное разделение)
- Ctrl + wj — переместить курсор в окно ниже (горизонтальное разделение)
- Ctrl + wk — переместить курсор в окно выше (горизонтальное разделение)
Вкладки
- :tabnew либо :tabnew file — открыть файл в новой вкладке
- Ctrl + wT — переместить текущее окно в собственную вкладку
- gt либо :tabnext либо :tabn — переключиться на следующую вкладку
- gT либо :tabprev либо :tabp — переключиться на предыдущую вкладку
- #gt — переключить на вкладку номер #
- :tabmove # — переместить текущую вкладку на # позицию (нумерация с 0)
- :tabclose либо :tabc — закрыть текущую вкладку и все её окна
- :tabonly либо :tabo — закрыть все вкладки кроме текущей
- :tabdo command — выполнить command на всех вкладках (к примеру :tabdo q — закрывает все открытые вкладки)
Как отсюда выйти: шпаргалка по Vim
Вы собираетесь создать файл crontab и внезапно оказываетесь в этом странном редакторе по умолчанию. В том, в котором всё никак не разберётесь.
ESC? Ничего не произошло. CTRL + C? Нет. ESC ESC ESC? Неа. Вы в тупике.
Ну вот, опять. Склонив голову от стыда, вы запускаете очередной терминал, чтобы исполнить команду killall vim и продолжить заниматься своими делами.
С вами бывало такое? Конечно, бывало. Что ж, потратив несколько минут на эту статью, вы познакомитесь с основами редактора Vim (и научитесь быстро выходить из него).
Vim по умолчанию установлен во многих операционных системах (включая большинство дистрибутивов Linux и macOS), поэтому хотя бы поверхностные знания о нём лишними не будут. Откройте терминал и введите vim .
В умелых руках Vim может стать мощнее многих IDE. И, разумеется, он не ест сотни мегабайт памяти лишь для отображения пустого файла (да, Eclipse, это о тебе).
Основы
Некоторые из нижеописанных команд начинаются с двоеточия: нажав его, появится подсказка, в которой будет указана полная команда. Команды без двоеточий — это скорее горячие клавиши, которые можно использовать в режиме по умолчанию (в нём запускается Vim). Команды, написанные ЗАГЛАВНЫМИ БУКВАМИ — это отдельные клавиши: например, ESC — это клавиша Esc на вашей клавиатуре.
Все команды чувствительны к регистру и должны выполняться вне режима insert.
Выход из Vim
Выход без сохранения изменений:
Как запомнить: quit dammit! (закройся, чёрт возьми!)
Выход с сохранением изменений:
Как запомнить: write to disk and quit
Навигация
Для перемещения по открытому файлу используйте стрелки.
Перемещение на строку 285:
Изменение текста
Вставка текста там, где стоит курсор:
Вставка текста в конце текущей строки:
Выход из режима редактирования (возврат в стандартный режим):
Выделение текста
Переход в визуальный режим:
Для выделения текста используйте стрелки.
Выход из визуального режима:
Копирование, удаление, вставка
Копирование выделенного текста в буфер:
Удаление выделенного текста:
Копирование текущей строки в буфер:
Как запомнить: yank yank
Копирование трёх строк, включая текущую, в буфер:
Удаление текущей строки и помещение её в буфер:
Как запомнить: delete delete
Удаление 5 строк, включая текущую:
Вставка из буфера перед текущей строкой:
Вставка из буфера после текущей строки:
Отмена и восстановление последнего изменения
Отмена последнего изменения:
Восстановление последнего отменённого изменения:
Отмена двух последних изменений:
Многоуровневое дерево отката изменений Vim очень мощное, подробнее о нём можно почитать в документации.
Работа с файлом
Открытие файла index.html вместо текущего:
Сохранение текущего файла:
Как запомнить: write to disk
Сохранение файла с изменённым именем, например, changes.txt:
Поиск и замена
Поиск и замена всех вхождений строки в файле:
Поиск и замена с запросом подтверждения замены:
Подсветка синтаксиса и отступы
Включение подсветки синтаксиса:
Включение автоматических отступов:
Увеличение отступов нескольких строк при выделении их в визуальном режиме:
Вкладки
Открытие server.py в новой вкладке:
Переход на вкладку справа:
Переход на предыдущую вкладку слева:
Как запомнить: tab previous
Для закрытия вкладки переключитесь на неё и используйте команду :q или :wq .
Разделённый экран
Открытие templates/base.html в режиме вертикального разделения экрана:
Как запомнить: vertical split
Открытие shared.js в режиме горизонтального разделения экрана:
Как запомнить: the ’default’ horizontal split
Перемещение между «частями» экрана:
Для закрытия экрана переключитесь на него и используйте команду :q или :wq .
Настройка Vim: файл .vimrc
Многие команды, используемые для изменения вида и поведения Vim, можно сделать включёнными по умолчанию, поместив их в .vimrc — файл конфигурации Vim, который расположен в домашнем каталоге.
Например, добавление этих строк в ~/.vimrc сделает подсветку синтаксиса и автоматическую корректировку отступов включёнными по умолчанию:
Идеи для кастомизации Vim можно почерпнуть в этом GitHub-репозитории.
Полезные ресурсы
Вот ещё несколько полезных материалов для изучения Vim:
А какая команда Vim — ваша любимая? Может, вы знаете удобные приёмчики? Делитесь ими в комментариях!