В этот раз мы научимся работать с окнами и фолдами в 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)


  1. domix32
    00.00.0000 00:00
    +1

    Завести бы плагин разворачивания буффера на весь экран, как это tmux делает. Он есть, но работает довольно криво.
    А можно в начало статьи ссылки на предыдущие статьи серии бахнуть?


  1. turbidit
    00.00.0000 00:00
    +1

    Заметьте, что слева появилась длинная линия, которая показывает, что в этом блоке создан фолд!

    А у меня не появляется, ни в консоли, ни в neovide