Думаю, многие из вас уже сталкивались с vim. Vim - это текстовый редактор для linux-based систем.

По моему личному усмотрению большинство пользователей vim делятся на 2 типа:

  1. Я его поставил, что-то он какой-то сложный. Я даже не смог сохранить изменения в файле.
  2. Да нет там ничего сложного. Правда из всего что я знаю это сохранить изменения, закрыть документ и осуществить поиск.

И да вы можете сказать, что навыков 2 типа вполне хватает для работы. И в 80% случаев применения vim вы будете правы.

Но что можно сказать об остальных 20%? А вот что:

  • Эти 20% в основном выпадают на срочные задачи (когда у вас что-то поломалось). Допустим вам надо перейти на определённую строку в файле, и вы не знаете, как это сделать, и тупо считаете строчки.
  • Как правило из-за незнания всех возможностей vim манипуляция с этими 20% занимают долгое время.

В этой статье мы поговорим о плагинах, горячих клавишах и т.д.

Люди говорят, что стать гуру vim практически не реально, но обязательно стоит попробовать.

Запуск vim

Для запуска vim вбиваем vim. После чего нас встречает окно с описанием базовых команд и другой информацией о vim.

enter image description here

Режимы vim

  • Режим Normal По у молчания vim открывается именно в этом режиме. В этом режиме вы можете править документ (например, удалять строки двойным нажатием клавиши d). И можете передвигаться по документу используя клавиатуру. Также вы переходите их этого режима во все остальные.

  • Режим Insert Находясь в нормальном режиме нажимаем клавишу i и переходим в режим Insert. Об этом нас оповещает надпись --INSERT-- в левом нижнем углу.

    В этом режиме вы можете писать текст.

    Для того чтобы выйти из режима Insert и перейти в режим Normal нажимаем ESC или CTRL+c.

  • Режим Visual В этом режиме вы можете выделять контент и производить с ним манипуляции. Вы можете изменить, отредактировать или скопировать свой выделенный текст.

    Для перехода в этот режим находясь в режиме Normal нажимаем клавишу v.

    Если вы хотите выделить всю строку целиком находясь в режиме Normal нажмите на клавиатуре SHIFT+v.

  • Режим Command-Line Находясь в этом режиме, вы можете выполнять команды vim.

    Для перехода в этот режим необходимо ввести : в режиме Normal и ваш курсор автоматически окажется внизу.

    Небольшой список команд, которые вы можете использовать:

    • :help - как понятно из названия выводит справку (например вы можете получить помощь по режимам :help vim-modes)
    • :q - выход из vim (только если нет изменений)
    • :q! - выход из vim и отмена всех изменений в документе
    • :w - сохранить все изменения в документе
    • :wq - сохранить изменения и выйти из vim
    • :e - даёт возможность открыть документ по абсолютному пути (т.е вбиваете путь к документу, который хотите открыть)

Поиск по документу

Для поиска слов в документе находясь в режиме Normal вбиваем / после чего курсор перемещается в низ редактора, где вы уже пишите интересующее вас слово и нажимаете ENTER.

Для того чтобы перейти к следующему совпадению в документе нажимаем n, а для предыдущего N.

Для получения справки по поиску можно воспользоваться :help search-commands.

Отмена изменений (Undo)

Для того чтобы отменить выполненные изменения находясь в режиме Normal нажимаем u, для того чтобы вернуть изменения нажимаем CTRL+r.

Для получения справки можно воспользоваться :help undo-redo.

Команды режима Insert

Для входа в режим Insert вы также можете использовать и другие клавиши, а именно:

  • a - перейти в режим Insert и поместить курсор после текущего символа
  • A - перейти в режим Insert и поместить курсор в конец строки
  • o - перейти в режим Insert и поместить курсор на строку ниже
  • O - перейти в режим Insert и поместить курсор на строку выше при этом имитируя нажатие ENTER (новая строка)

Операторы и текстовые поля

Операторы - это глаголы языка Vim. Выполняют манипуляции с текстом, вот некоторые из них:

  • d - в комбинации со стрелками удаляет символ слева или справа
  • diw - удалит всё слово
  • dip - удаляет весь параграф
  • c - удаляет выделенный фрагмент (в режиме Visual) и переходит в режим Insert
  • ciw - тоже самое что c, только со словом
  • y - копирует выделенное (в режиме Visual)
  • yy - скопировать строку
  • p - вставить скопированное
  • d$ - удалить всё с начала курсора до конца строки
  • dgg - удалить всё с начала курсора до начала строки
  • ggdG - удалить всё в файле

Для просмотра справки можно воспользоваться :help operator и :help text-objects.

Перемещение курсора

Вроде бы всё понятно просто двигаешь курсор стрелочками на клавиатуре.

А что если вы точно знаете, что хотите переместить курсор на 5 строк ниже? А всё так же просто нажимаете цифру 5и потом стрелочку вниз. В итоге окажетесь на 5 строк ниже (также работает и с другими стрелками).

Вы также можете использовать клавиши h, j, k и l вместо стрелок для перемещения курсора соответственно влево, вниз, вверх и вправо.

Также вы можете использовать следующие клавиши:

  • w - переход ко следующему слову. Если в строке одно слово, то переходит на новую строку
  • b - переход к предыдущему слову. Если в строке одно слово, то переходит на строку вверх
  • 0 - переход в начало строки
  • ˆ - переход к первому непустому символу в строке (т.е отсекает пробелы в начале строки)
  • $ - переход в конец строки
  • % - если курсор находится на открывающей скобке перемещает его на закрывающую скобку
  • G - перейти в конец документа. Может использоваться для перехода на определенную строку, например, 10G переведёт курсор на 10 строку.
  • gg - перевести курсор в начало документа
  • CTRL+e - прокрутить окно вниз
  • CTRL+u - перевести курсор вверх на половину экрана
  • CTRL+d - перевести курсор вниз на половину экрана