Vim/Згортання
Vim дозволяє згортати деякі частини тексту в один рядок, якщо ви не плануєте з ними найближчим часом працювати, щоб вони не заважали вам читати документ. Це зручно, якщо ви наприклад написали довгий клас посеред програми, а тепер вам часто доводиться редагувати якісь константи на початку, і основний код в кінці. Перегортати щоразу 100-200 рядків - забагато мороки. Тому їх можна згорнути.
Команди роботи зі згортками в Vim починаються з букви z. Англійською згортка - fold. Буква z обрана тому, що вона схожа на зігнутий листок паперу.
zf#jстворити згортку від курсора і на # рядків нижче.zf/stringстворити згортку від курсора до рядка що містить "string".zjперейти до наступної згортки.zkперейти до попередньої згортки.zoвідкрити згортку під курсором.zaвідкрити/закрити згортку під курсором.zсзакрити згортку під курсором.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 не знищує створені в попередньому режимі згортки).