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

Режимы в Nvim нужны для того, чтобы сломать жизнь неподготовленным чародеям, а выспаться вы сможете только тогда, когда полностью прочитаете всю документацию, сможете выйти из Nvim и, просветленный, навсегда отключите компьютер…

Сколько режимов в Neovim?

Чтобы обычные IDE и текстовые редакторы ни в коем случае не почувствовали себя равными Nvim'у, наш Колдовской Редактор использует целых ЧЕТЫРЕ режима:

  • Обычный Режим (Normal). Это режим “орла”, парящего над текстом. Позволяет мгновенно перемещаться по тексту-коду, удалять, наказывать, редактировать, копировать и вставлять.

  • Режим Вставки (Insert). В нем мы пишем текст или код. Жутко медленный и неповоротливый режим, но он необходим - должны же мы хотя бы иногда писать код.

  • Визуальный режим (Visual). Позволяет выделять текст, и потом делать с ним разные штуки. "Разные штуки" в понимании Nvim'a занимают десятки страниц документации, и проще перечислить то, чего вы не можете сделать с помощью визуального режима.

  • Командный режим (Command-Line). Позволяет запустить в редакторе свою собственную продвинутую командную строку для, например, замены текста с помощью регулярок.

И всеми этими режимами вы сможете постоянно пользоваться, на лету переключаясь с одного на другой. Magic!

Где посмотреть режим? Обычно он находится в левом-нижнем углу окна редактора:

Сейчас мы в Обычном (Normal) Режиме
Сейчас мы в Обычном (Normal) Режиме

Для чего нужны режимы?

Гаечным ключом мы закручиваем гайки, молотком забиваем гвозди, а дрелью сверлим дыры в стене. Почему мы не используем один инструмент на все случаи жизни? Потому что его нет. Можно получить что-то универсальное, но ни качество, ни функциональность вас не устроят. Дрель с прикрученным к ней молотком? Эффектно, не более. Не для профессиональных строителей.

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

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

Обычный режим

Это режим, включенный “по умолчанию”. Он используется для молниеносной навигации, удаления, редактирования текста и многого другого. Из Обычного режима вы всегда можете перейти в любой другой Режим. Возвращаться из любого режима вы почти всегда будете в Обычный.

Как перейти?

Вернуться в Обычный Режим можно следующими командами (выбирайте ту, которая больше подойдет для вашей растяжки пальцев и формата клавиатуры):
<ESC>
CTRL+[
CTRL+C
В конфиге из прошлой части для выхода в Обычный режим также используется сочетание клавиш <jk> Очень удобно, ведь ваш указательный и средний палец уже лежат на этих клавишах!

Я представляю Обычный Режим как “режим орла”. Этот режим парит высоко-высоко, поддерживаемый воздушными потоками, и оттуда видит всю картину целиком.

Нужно схватить мышку (напечатать текст)? Орел камнем падает вниз, печатает текст, а потом возвращается наверх.

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

Режим Вставки

Режим Вставки дает возможность писать текст. И всё.

  • Редактируем текст мы в Обычном Режиме.

  • Удаляем, копируем, вставляем в Обычном Режиме. Конечно, Nvim дает возможность использовать <backspace>, чтобы удалить неверный символ. Но более сложные удаления - через Обычный Режим.

  • Даже перемещаться по тексту в Режиме Вставки неудобно, и лучше опять-таки перейти в Обычный Режим.

Почему такая дискриминация? Всё потому, что код мы пишем редко. Средний программист намного больше времени тратит на перемещение по коду, чтение, редактирование. И именно поэтому для написания кода используется отдельный режим.

Представьте, что вы вернулись в прошлое и вместо многоядерного процессора у вас печатная машинка. Вы можете отстукать по клавишам текст, но стирать или редактировать нельзя! Это и есть Режим Вставки. Переключились, настукали текст, вернулись обратно.

Итак, если мы войдем в Режим Вставки:

  • Курсор из квадратика превратится в линию

  • Режим в левом нижнем углу сменится на Insert.

  • Почти все магические команды Nvim’a превратятся в тыкву обычные клавиши-буквы.

  • Появится великое множество новых команд, которые работают только в Режиме Вставки.

Как перейти?

Итак, мы парим над местностью в Обычном Режиме, и вдруг захотели что-то добавить в код. Нам нужно перейти в Режим Вставки. Вот команды (через слеш будут разные вариации команд).

i / a Начать ввод перед/после курсора. Удобно запомнить как 'i'nsert и 'a'ppend

I / A Начать ввод в начале/конце текущей строки. Как предыдущий вариант, но на стероидах.

o / O Начать ввод с новой строки под / над курсором

s Удалит указанное кол-во символов и перейдет в Режим Вставки. Если мы наберем команду 4s, то Neovim удалит 4 символа после курсора и перейдет в Режим Вставки.

S Целиком очистит строку и перейдет в Insert. Читаем как 'S'ubstitute

R Последовательная замена символов. Запоминаем как 'R'eplace. <backspace> работает как отмена последней замены! Объяснить довольно сложно - просто попробуйте.

r Заменит знак под курсором. Жмем, потом набираем нужный символ на замену - и оказываемся в Обычном Режиме. Удобно, когда нужно исправить один символ, но не выходить из Обычного Режима.

Command Line

Как перейти?

Чтобы попасть в этот Режим нам нужно ввести символ : . Слева-снизу появится двоеточие, после которого мы и вводим нашу команду.

Я знаком с Nvim не так долго, поэтому весь функционал командной строки пока не изучил. Но расскажу про две основные зоны, где я начинал применять командную строку.

  1. Сохранение и выход из файла.

    :w сохранить файл ('w'rite).
    :wq и мы сохраним файл и сразу выйдем из него. Еще можно набрать :x и получить тот же эффект.
    :q просто выйти из файла
    :q! выйти из файла без сохранения
    :new <file> создаст новый файл.
    :edit <file> откроет файл для редактирования сразу в Nvim.

  2. Поиск. Тут есть особенность, что в поиск мы попадаем не через символ :, а через символ / или ?.

    /{pattern} Поиск паттерна справа от курсора. Да, это regex.
    ?{pattern} Поиск паттерна слева от курсора
    Enter Прыгаем к первому совпадению с паттерном
    n Следующее вхождение паттерна
    N Предыдущее вхождение
    :nohlsearch Можно убрать надоедливую подсветку поиска.

Режим Выделения

Этот режим отлично подходит для тех операций, которые требуют точности и наглядности. Мы уже знакомы с командой 4s - когда мы хотим удалить 4 символа и перейти в Режим Вставки. А что если мы хотим удалить примерно 12 символов? Неужели будем вглядываться в экран и считать? Ведь можем и обсчитаться, удалить лишнее. Нехорошо и не по-чародейски.

Nvim дает много инструментов для более точных операций, и Режим Выделения - один из них.

Как перейти?

Следует нажать клавишу v и вы попадете в этот режим. Теперь клавиши перемещения будут выделять текст посимвольно! Выделенный текст можно скопировать в буфер через y ('y'anking) или удалить через d ('d'elete). Почти всё, что можно делать в других режимах, можно делать и в Режиме Выделения.

А не мало ли режимов? Мало! На самом делится Режим Выделения делится на 3 подрежима:

v Выделение одиночных символов

V Построчное выделение

CTRL+v Блочное выделение (идеально для работы с таблицами)

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


Немножко Nvim магии. Поместите курсор в любое место любого параграфа (в Обычном режиме, не забывайте) и последовательно наберите команду vip

Читается как “перейти в Визуальный режим и выбрать inner paragraph”. Это маленькая, но очень гордая команда, которая позволяет работать с текстом не как с простой последовательностью символов, а на более высоком уровне абстракции.

Это важнейшая часть Nvim'а! Мы можем объединять команды и режимы Nvim'а с командами движения. О навигации и командах движения расскажу в следующей части!

Комментарии (5)


  1. nronnie
    20.12.2022 11:05

    выбирайте ту, которая больше подойдет для вашей растяжки пальцев

    У меня поэтому "Caps Lock" переназначен на "Esc".


    1. kasyachitche
      20.12.2022 11:07
      -1

      del


    1. shoorick
      20.12.2022 18:50
      +1

      А зачем? Мне кажется, в Esc попасть достаточно просто — в углу же. Что же до капслока, то у меня, например, он раскладки переключает — увидел такое в консоли FreeBSD лет 20+ назад, втянулся — теперь и под иксами применяю.


      1. nronnie
        20.12.2022 19:22

        В угол тянуться далеко, а Капс прямо слева от мизинца. Я как текстовый редактор использую практически только vim (если надо открыть файл из проводника, то gvim, если в консоли, то просто консольный, в Visual Studio и VSCode стоят расширения для его эмуляции - VsVim и VsCodeVim), поэтому мне расположение Esc критично, а раскладки я наоборот переключаю намного реже, да и "современная" комбинация "Win + Space" достаточно удобна - пробел всегда под большими пальцами.


  1. turbidit
    20.12.2022 15:54
    +4

    Попробуйте попасть в каждый из этих режимов и понажимать стрелочки
    стрелочки

    Вот вы и попались!