Консультация по продукту 1cloud

Vim: рабочие режимы, хоткейсы и команды


Vim — это терминальный текстовый редактор, работающий почти в любой Linux-based операционной системе. Vim обрёл свою популярность благодаря возможности расширения функционала модулями, автоматизации и необычному подходу к редактированию кода. Vim ускоряет разработку, а главное, он позволяет за считаные минуты получить знакомую вам среду для работы на удаленной машине. Несмотря на свою популярность Vim обычно не входит в базовые дистрибутивы Linux. Поэтому сначала его надо установить. Установить Vim можно из стандартных репозиториев Linux:

apt install vim

Интерфейс

Стандартный интерфейс вима аскетичен и не очень информативен. Однако это легко исправляется множеством дополнений. Об этом мы расскажем чуть позже, а пока обратите внимание, что внизу редактора расположена информационная строка, которая отображает кол-во скопированных в буфер элементов и время последнего копирования.

Но главное, при задействовании некоторых хоткейсов в строке выводится вспомогательная информация. Например, кол-во скопированных строк или символов.

Эта информация бывает полезной для комбинирования нескольких хоткейсов. Больше ничего интересного в интерфейсе вима нет. Перейдем к горячим клавишам вима.

Горячие клавиши Vim

Vim имеет разные режимы работы, каждому из которых соответствует свой набор горячие клавиш (хоткейсов). А ещё у вима своя собственная терминология, на базе которой организованы группы хоткейсов.

Так, копирование в Vim — это yank, а хоткейсы для копирования начинается с y. Удаление — delete. Хоткейсы для удаления и вырезания начинаются с d. Вставка — put. Хоткейсы для вставки начинаются с p. Визуальный режим — visual. Хоткейсы для работы в визуальном режиме начинаются с v.

Поначалу эта система кажется запутанной, но немного поработав в ней — вы привыкнете, и руки сами запомнят все нужные комбинации. Перейдем к рассмотрению хоткейсов. Начнём с горячих клавиш для «обычного режима».

Горячие клавиши «обычного режима»

Обычный режим — это базовый режим, в который пользователь попадает сразу после запуска вима. Этот режим позволяет перемещаться по документу и вносить в него некоторые изменения. Базовые хоткейсы для этого режима:

  • h,j,k,l — замена классических стрелок для навигации по документу
  • w — сдвиг курсора на слово вправо
  • b — сдвиг курсора на слово влево
  • Shift + w — сдвиг курсора до пробела вправо
  • Shift + b — сдвиг курсора до пробела влево
  • ^ (Shift + 6) — переместить курсор к первому пробелу в начале строки
  • 0 — переместить курсор к началу строки
  • $ (Shift + 4) — переместить курсор в конец строки
  • Ctrl + y — переместить курсор на строку вверх, с сохранением позиции
  • Ctrl + e — переместить курсор на строку вниз, с сохранением позиции
  • { — переместить курсор на абзац вверх
  • } — переместить курсор на абзац вниз
  • Ctrl + d — переместить курсор на полстраницы (экрана) вниз
  • Ctrl + u — переместить курсор на полстраницы (экрана) вверх
  • Ctrl + f — переместить курсор на страницу (экран) вниз
  • Ctrl + b — переместить курсор на страницу (экран) вверх
  • gg — перейти в начало файла
  • G (Shift+ g)— перейти в конец файла
  • номер строки + G — переместить курсор на конкретную строку
  • / искомый текст ↵ Enter — найти текст и переместиться к нему
  • ? искомый текст ↵ Enter — то же самое, но искать с конца документа
  • n — повторить поиск текста (сразу переместит к искомому тексту)
  • N — повторить поиск назад (сразу переместит к искомому тексту)
  • g~~ — инвертировать регистр строки
  • ggguG — перевести весь текст в нижний регистр
  • gggUG — перевести весь текст в верхний регистр

Разберем отдельно хоткейсы и команды поиска и удаления. Начнем с команд поиска:

  • /jo[ha]n> — искать “john” или “joan”.
  • /\<for — найти слово, начинающиеся на for. Если перед for будет стоять пробел — будет найден вложенный for (Python). Чтобы был найден for с любым количеством пробелом перед ним, укажите следующую конструкцию: /\ * for.
  • /end\> — искать слово, оканчивающиеся на end
  • /\ — искать pagination (точное совпадение)
  • /\<...\> — искать слово из 3 символов (кол-во точек = кол-во знаков)

Хоткейсы для удаления:

  • d^ (Shift + 6) — удалить все символы от курсора до начала строки
  • d$ — удалить все символы от курсора до конца строки
  • d/ слово — удалить всё от курсора до введенного слова
  • df символ — удалить всё от курсора до указанного символа

Перемещать быстро по документу — это искусство, которое может многих впечатлить, но без навыков быстрого редактирования, оно будет выглядеть неполноценным. Для входа в режим редактирования существует целый блок хоткейсов.

Для быстрого перехода в режим редактирования достаточно нажать горячую кнопку i, а чтобы выйти — Esc.

Перейти в режим редактирования можно также с помощью следующих хоткейсов:

  • Shift + i — перейти в режим редактирования текста сначала строки
  • a — перейти в режим редактирования текста после курсора
  • Shift + a — перейти в режим редактирования текста с конца строки
  • o — перейти в режим редактирования текста с новой строки под курсором
  • O (Shift + o) — перейти в режим редактирования текста с новой строки над курсором
  • число s ↵ Enter — удалить заданное кол-во символов после курсора и перейти в режим редактирования
  • число S (Shift + s) ↵ Enter — удалить заданное кол-во строк вместе с текущей и перейти в режим редактирования
  • R — заменить символы после курсора и перейти в режим редактирования
  • r — заменить один символ и перейти в режим редактирования
  • cc — удалить строку и перейти в режим редактирования
  • C (Shift + c) — удалить символы от курсора до конца строки и перейти в режим редактирования

Для удаления символов, слов и строк существует целый набор хоткейсов:

  • x — удалить символ под курсором
  • число x — удалить заданное кол-во символов
  • X (Shift + x) — удалить символ перед курсором
  • число X — удалить заданное кол-во символов перед курсором
  • de — удалить символы с текущего до конца слова, не включая пунктуацию и пробел в конце слова
  • dE — удалить символы с текущего до конца слова, включая пунктуацию и пробел в конце слова
  • dw — аналог de с удаление пробела в конце
  • di w — удалить слово под курсором
  • d d — вырезать текущую строку
  • числ dd — вырезать заданное кол-во строк, начиная с текущей
  • db — удалить символы с текущей позиции курсора до начала слова
  • dO — удалить символы с текущей позиции курсора до начала строки
  • D (Shift + d) — удалить символы с текущей позиции курсора до конца строки

Так же как и для удаления, для копирования и вставка существует свой отдельный блокхоткейсов:

  • yiw — скопировать слова целиком
  • yw — скопировать символы от курсора до конца слова
  • y^ (Shift + 6) — скопировать все от курсора до конца строки
  • yy — копировать строку целиком, включая символ новой строки
  • число yy — скопировать заданное кол-во строк, включая текущую
  • y$ (Shift + 4) — скопировать всё от курсора до конца строки
  • y) (Shift + 0) — скопировать всё от курсора до конца абзаца
  • y( (Shift + 9) — скопировать всё от курсора до начала абзаца
  • p — вставить содержимое буфера после курсора
  • P — вставить содержимое буфера перед курсором
  • J — слить текущую строку с последующей
  • число J — слить заданное кол-во строк.

А вот и небольшой лафхак, связанный с информационной строкой внизу окна вима. Если нужно слить все строки в абзаце — установите курсор в начале абзаца и воспользуйтесь сочетанием клавиш y). В внизу окна вима выведется кол-во скопированных строк, а теперь воспользуйтесь хоткейсом для слияния заданного кол-ва строк — число J.

Теперь мы знаем множество хоткейсов для навигации и редактирования текста, однако отменять последние действия мы пока ещё не умеем. Для отмены последнего действия существует несколько хоткеев:

  • u — отмена последнего действия
  • U — отмена всех действий в строке. Если строка удалена — команда не сработает.

Обычный режим позволяет редактировать текст командами, однако иногда необходимо выделить часть строки или часть блока текста. Сделать это можно в специальном режиме — визуальном.

Горячие клавиши визуального режима

Визуальный режим позволяет выбирать текст и управлять им. Установите курсор в место визуального выделения текста и нажмите v. Смещение курсора влево или вправо — выделяет текст посимвольно, смещение курсора вверх и вниз — выделяет текст построчно.

Можно войти в визуальный режим сразу сразу с функции построчного выделения текста — Shift + v. Помимо посимвольного и построчного выделения текста, существует режим блочного выделения текста — Ctrl + v.

Режим визуального выделения текста очень хорошо сочетается с хоткейсами обычного режима. Например, чтобы быстро выделить весь абзац достаточно установить курсор в начало абзаца нажать v и }.

Часто необходимо провести какие-то манипуляции с текстом целиком или с его отдельными блоками. Например, изменить регистр во всем документе. Вот некоторые хоткейсы визуального режима:

  • Vu — перевести строку в нижний регистр
  • VU — перевести строку в верхний регистр
  • vEU — перевести слово под курсором в верхний регистр
  • vE~ — инвертировать регистр слова

Итак, мы рассмотрели два режима: обычный режим и визуальный. Оба режима позволяют редактировать текст внутри документа. Теперь рассмотрим режим, который позволяет управлять состоянием документа.

Команды режима управления (командный режим)

Чтобы перейти в командный режим, находясь в обычном режиме — нажмите: (Shift;). В нижней строке состояния Vim должно появиться двоеточие. Это означает, что командный режим активирован и ожидает ввода команд.

Если двоеточие не появилось — нажмите несколько раз Esc, а затем повторите ввод двоеточия. Ввод команды подтверждается, нажатием кнопки ↵ Enter.

Возможности командного режима намного шире, чем просто сохранение файла и выход из Vim. Поэтому рассмотрим помимо команд работы с документом ещё команды замены текста.

Команды работы с документом

Существует множество команд для работы с документом. Все команды начинаются с:. Приведем основные команды для работы с документами:

  • ZQ или q! — выйти без сохранения
  • qa! — выйти из всех файлов без сохранения
  • ZZ или wq или x — записать и выйти
  • w — записать файл
  • sav имя_файла — сохранить как
  • w! — сохранить в новый файл
  • sh — свернуть Vim и перейти в командную оболочку
  • Ctrl + d или exit
  • q — выйти из редактора
  • e! — отменить все изменения в текущей сессии
  • 1,10w имя_файла — создать файл и скопировать в него содержимое текущего файла с 1 по 10 строки
  • 1,10w>> имя_файла — добавить в файл с 1 по 10 строки из текущего файла
  • r название_файла — вставить содержимое из файла
  • 23r название_файла — вставить содержимое файла после 23 строки

Команды для замены частей текста

Основной конструкцией для составления поискового запроса в командном режиме является — :%s. Далее идут аргументы запроса. Все команды запроса вводятся в командном режиме, с активным: Приведём популярные команды поиска и замены:

  • %s/искомое_слово/слово_замена/g — найти и заменить все искомые слова на слова замены
  • 5,10s/искомое_слово/слово_замена/g — найти и заменить все искомые слова на слова замены между 5 и 10 строчками
  • 5,$s/искомое_слово/слово_замена/g — найти и заменить все искомые слова на слова замены, начиная с 5 строчки и до конца файла
  • %s/искомое_слово/слово_замена/gi — заменить искомое слово на слово замену с учетом регистра
  • %s/ *$//g — убрать все пробелы из файла
  • %s/\r//g — убрать все возвраты каретки из файла
  • %s#>[^<]\+>##g — убрать html-теги из документа
  • %s/\<./\u&/g — перевести первую букву каждого слова в верхний регистр
  • %s/\<./\l&/g — перевести первую букву каждого слова в нижний регистр
  • %s/.*/\u& — перевести первую букву первого слова в каждой строке в верхний регистр
  • %s/.*/\l& — перевести первую букву первого слова в каждой строке в нижний регистр

Мы разобрали горячие клавиши и команды для управления состоянием файлов. Теперь настало время немного настроить Vim так, чтобы он выглядел более современно и функционально.

Настройка Vim

Vim можно настроить командами через командный режим или с помощью конфигурационного файла vimrc, который обычно расположен в директории: /etc/vimrc/vimrc.

Изначально vimrc содержит множество технической информации не нужной нам, поэтому откроем файл и очистим его, используя визуальный режим и некоторые хоткейсы обычного режима: перейдём в визуальный режим — v, теперь нажмём G (перевод курсора в конец документа) и нажмем del. Всё, файл очищен, теперь можно приступать к настройки Vim.

Настройки задаются короткими кодовыми командами, начинающимися с ключевого слова set. А комментарии, поясняющие значение команды, начинаются с ".

Добавим следующие полезные опции и настройки, которые сделают работу в Vim более приятной:

set number " — включить нумерацию строк
set iminsert=0 " — игнорировать регистр при поиске
set ic " — подсветить поиск
set ts=4 " — задать размер табуляции в 4 пробела
set showcmd " — отображать, выполняемую команду
set linebreak " — перенос по словам

Помимо опций, существует ещё множество разнообразных плагинов, которые расширяют возможности Vim. О них мы расскажем в других публикациях. А на этом разбор основных хоткейсов, команд и базовых настроек вима для удобной и продуктивной работы в текстовом редакторе закончен.


Средняя оценка: 5,0, всего оценок: 8