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
не знищує створені в попередньому режимі згортки).