В этот раз мы научимся работать с окнами и фолдами в Nvim. И в итоге сможем контролировать все те строки кода, которые попадают в поле нашего зрения.
Окна
Neovim позволяет работать с окнами. Это удобная альтернатива для tmux и подобных программ.
Почти все фишки с окнами доступны после нажатия волшебной комбинации <CTRL>+w
. Запоминаем как “window”. То есть мы нажимаем эту комбинацию, отпускаем клавиши, и сразу за ними прожимаем еще что-то. Потренируемся и создадим новое окно. Откройте редактор и нажмите <CTRL>+w n
. Должно получить что-то вроде этого:
По умолчанию мы создадим горизонтальное окно. Для более точного контроля типа создаваемых окон, вы можете использовать следующие комбинации:
Для горизонтального разделения:
<CTRL>+w s # (я запоминал как "south" - создать окна на юге)
:split # Команда для командной строки. Также разобьет горизонтально
Для вертикального:
<CTRL>+w v # (я запоминал как "vertical")
:vnew # Команда для командной строки. Также разобьет вертикально
Перемещение
Для перемещения между окнами мы используем наши любимые hjkl
.
<CTRL>+w {hjkl} # Перемещение от окна к окну
Например мы находимся в нижнем окне:
Мы прожимаем <CTRL>+w k
и попадаем в окно выше.
???? Иногда сложно понять, в каком окне мы находимся. Попробуйте посмотреть на подсвеченный режим. В данном случае режим “NORMAL” подсвечивается у нижнего окна, значит мы именно в нем.
???? Если окон мало, то мы можем просто циклически перемещаться по окнам с комбинацией ctrl+w w
. Если вы работаете с 2-3 окнами, то этот вариант удобнее.
Если вы хотите переместить окно в другое место (эстеты-привиреды), то:
<CTRL>+w {HJKL} # Поменять окна местами
Представьте, что вы прыгаете не от окна к окну, а прыгаете ВМЕСТЕ с окном.
Если окон стало слишком много и они вам надоели, то:
:q # Закрыть окно через командную строку
<CTRL>+w o # Закроет все окна, кроме текущего
Размеры окон
Размер имеет значение! Где-то нам нужно несколько строчек, а где-то мы бы хотели видеть как можно больше кода. Как увеличить окно?
{q}<CTRL>+w + # Увеличить размеры окна
{q}<CTRL>+w - # Уменьшить размеры окна
То есть мы ставим квантификатор ("на сколько строчек хотим увеличить?"), прожимаем волшебную комбинацию и затем плюсик. А вот так мы сможем установить точный размер:
{height}<CTRL>+w _ # Точный размер окна
Допустим, в одном из окон у вас открыта функция из 7 строк. А больше вам и не надо. Чтобы в окне помещалась только она, используйте команду 7<CTRL>+w _
Сворачивание (Фолды)
Для нашего удобства в колдовском редакторе есть очень удобный способ сворачивать классы и функции, которые мы не хотим держать в поле зрения. Знакомимся с новой мета-командой z
, которая управляет фолдами. Я запомнил ее как “zвернуть”, хотя в документации советуют представить буковку “z” как свернутый лист бумаги.
Создадим простой фолд. Для начала выделим блок текста. Напомню, чтобы перейти в режим выделения строк в визуальном режиме, надо нажать SHIFT+v
И после этого создадим новый фолд через zf
У нас появился плюсик и осталось отображение первой строчки фолда. Nvim запомнит этот фолд, и теперь мы можем поставить курсор на строку с фолдом и нажать:
zo # развернуть фолд.
Заметьте, что слева появилась длинная линия, которая показывает, что в этом блоке создан фолд! Nvim их все помнит, и нам не придется заново что-то выделять.
zc # Свернуть фолд. Если фолд уже свернут, то не возымеет эффекта.
za # Сворачивает и разворачивает в зависимости от контекста.
zd # Удалит фолд
zE # Удалит все фолды на странице
zr # Откроет все фолды
zm # Закроет все фолды
zj # Прыгнуть к следующему фолду
zk # Прыгнуть к предыдущему фолду
???? Nvim также позволяет создавать вложенные структуры фолдов. К сожалению, я не пользуюсь этим функционалом. Там ничего сложного, просто как-то не особо пригождается. Изучить можно в документации Nvim.
???? Вы можете копировать (yank) и удалять фолды, не раскрывая их.
???? Если пойти по закрытому фолду вправо (через клавишу l - "эл"), то он автоматически откроется.
Надеюсь, что эта статья поможет тем, кто еще не использовал окна и фолды в Neovim и заменял это либо количеством открытых окон в терминале, либо tmux'ом. А в следующий раз у нас будет праздник, и мы рассмотрим регистры и скрипты, которые автоматизируют большое количество задач в колдовском редакторе.
Комментарии (2)
turbidit
00.00.0000 00:00+1Заметьте, что слева появилась длинная линия, которая показывает, что в этом блоке создан фолд!
А у меня не появляется, ни в консоли, ни в neovide
domix32
Завести бы плагин разворачивания буффера на весь экран, как это tmux делает. Он есть, но работает довольно криво.
А можно в начало статьи ссылки на предыдущие статьи серии бахнуть?