Режим в жизни нужен для того, чтобы не растолстеть к тридцати годам и высыпаться.
Режимы в Nvim нужны для того, чтобы сломать жизнь неподготовленным чародеям, а выспаться вы сможете только тогда, когда полностью прочитаете всю документацию, сможете выйти из Nvim и, просветленный, навсегда отключите компьютер…
Сколько режимов в Neovim?
Чтобы обычные IDE и текстовые редакторы ни в коем случае не почувствовали себя равными Nvim'у, наш Колдовской Редактор использует целых ЧЕТЫРЕ режима:
Обычный Режим (Normal). Это режим “орла”, парящего над текстом. Позволяет мгновенно перемещаться по тексту-коду, удалять, наказывать, редактировать, копировать и вставлять.
Режим Вставки (Insert). В нем мы пишем текст или код. Жутко медленный и неповоротливый режим, но он необходим - должны же мы хотя бы иногда писать код.
Визуальный режим (Visual). Позволяет выделять текст, и потом делать с ним разные штуки. "Разные штуки" в понимании Nvim'a занимают десятки страниц документации, и проще перечислить то, чего вы не можете сделать с помощью визуального режима.
Командный режим (Command-Line). Позволяет запустить в редакторе свою собственную продвинутую командную строку для, например, замены текста с помощью регулярок.
И всеми этими режимами вы сможете постоянно пользоваться, на лету переключаясь с одного на другой. Magic!
Где посмотреть режим? Обычно он находится в левом-нижнем углу окна редактора:
Для чего нужны режимы?
Гаечным ключом мы закручиваем гайки, молотком забиваем гвозди, а дрелью сверлим дыры в стене. Почему мы не используем один инструмент на все случаи жизни? Потому что его нет. Можно получить что-то универсальное, но ни качество, ни функциональность вас не устроят. Дрель с прикрученным к ней молотком? Эффектно, не более. Не для профессиональных строителей.
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 не так долго, поэтому весь функционал командной строки пока не изучил. Но расскажу про две основные зоны, где я начинал применять командную строку.
Сохранение и выход из файла.
:w
сохранить файл ('w'rite).:wq
и мы сохраним файл и сразу выйдем из него. Еще можно набрать:x
и получить тот же эффект.:q
просто выйти из файла:q!
выйти из файла без сохранения:new <file>
создаст новый файл.:edit <file>
откроет файл для редактирования сразу в Nvim.Поиск. Тут есть особенность, что в поиск мы попадаем не через символ
:
, а через символ/
или?
./{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'а с командами движения. О навигации и командах движения расскажу в следующей части!