Vim дозволяє згортати деякі частини тексту в один рядок, якщо ви не плануєте з ними найближчим часом працювати, щоб вони не заважали вам читати документ. Це зручно, якщо ви наприклад написали довгий клас посеред програми, а тепер вам часто доводиться редагувати якісь константи на початку, і основний код в кінці. Перегортати щоразу 100-200 рядків - забагато мороки. Тому їх можна згорнути.

Команди роботи зі згортками в Vim починаються з букви z. Англійською згортка - fold. Буква z обрана тому, що вона схожа на зігнутий листок паперу.

Команди роботи зі згортками
  • zf#j створити згортку від курсора і на # рядків нижче.
  • zf/string створити згортку від курсора до рядка що містить "string".
  • zj перейти до наступної згортки.
  • zk перейти до попередньої згортки.
  • zo відкрити згортку під курсором.
  • za відкрити/закрити згортку під курсором.
  • закрити згортку під курсором.
  • zO відкрити всі згортки під курсором.
  • zm збільшити рівень вкладеності закритих згорток на одиницю. (Закрити по одній згортці що містить інші згортки).
  • zM закрити всі відкриті згортки.
  • zr зменшити рівень вкладеності закритих згорток на одиницю (Відкрити всі зовнішні згортки, не чіпати їх вміст).
  • zR відкрити всі згортки.
  • zd видалити згортку під курсором.
  • zE видалити всі згортки.
  • [z переміститись на початок відкритої згортки
  • ]z переміститись на кінець відкритої згортки

Тепер відкриймо якийсь файл з достатньою кількістю рядків, і створимо першу згортку. Для цього поміщуємо курсор в перший рядок нашої згортки, і пишемо команду zf4j. zf (f - fold) означає створити згортку, а 4j - команда переміщення курсору 4 рази вниз. Це створює згортку п'яти рядків починаючи з нашого включно. Можна використати іншу довільну команду переміщення. Наприклад згорнути все аж до початку: zfgg, чи до першої появи в тексті слова "end": zf/end.

Також згортки можна створювати в візуальному режимі (v, V, і навіть Ctrl+V), виділивши кілька рядків, і набравши zf.

Окрім цього, можна згорнути шматок тексту між відповідними дужками (одного рівня, вкладені пари дужок ігноруються, і теж згортаються). Для цього помістіть курсор біля відкриваючої дужки, і наберіть zfa). (Замість круглої дужки може бути фігурна, квадратна і кутова). Якщо ви знаходитесь на закриваючій дужці - вводьте zfa(, і Vim згорне від кінця до початку.

Згортки можуть бути вкладеними, тобто можна згорнути шмат тексту що вже містить згортки.

Згорнуті згортки виглядають так:

+-- 19 lines: (defun a2i (m)-------

Вони починаються з +--, якщо це згортка верхнього рівня, і збільшуюють кількість мінусів на початку, з кожним новим рівнем вкладення. Далі написана кількість згорнутих рядків, і текст першого з них.

Щоб розгорнути згортку під курсором наберіть zo (o - open). Щоб розгорнути згортку та всі вкладені в неї пишуть zO.

Розкрита згортка - це все одно згортка, редактор про неї пам'ятає, і якщо курсор знаходиться в ній, ми можемо закрити її назад командою zc.

Щоб повністю видалити згортку наберіть команду zd. Щоб видалити всі згортки - zE. Тільки будьте обережними, команда відміни u не працює для згорток, тому зміни будуть незворотніми.

Між згортками можна переміщуватись. zj - перейти до наступної згортки, zk - до попередньої.

Vim розглядає закриті згортки як рядки, тому dd видалить не тільки перший рядок тексту, а всі рядки згортки. Аналогічно і з yy.

Програмістів також може зацікавити змінна foldmethod, яка задає метод створення згорток. Її значення за замовчуванням - manual, тобто згортки створюються вручну, як було описано вище. Якщо з замінити її на

:set foldmethod=indent

то згортки створяться відповідно до вкладених блоків, але тоді їх не можна буде додавати та видаляти (зате перехід назад в режим manual не знищує створені в попередньому режимі згортки).

Посилання ред.

  1. Vim tips: Folding fun