Як ZyX сказав на #vim, це питання звучить як "Чому фахівці Vim воліють смачніше, ніж тепле?" .
"Vim експерти" не віддають перевагу буферам над вкладками: вони використовують буфери як проксі-файли, на яких вони є, а сторінки вкладки як робочі простори. Буфери та сторінки вкладок мають різні цілі, тому віддавати перевагу одній іншій немає сенсу.
Проблема з буферами та вкладками викликає сумбур , викликаний поєднанням незалежних фактів.
Більшість "сучасних" текстових редакторів та IDE використовують метафору вкладки для представлення завантажених файлів. Ця метафора виступає як інформаційна система - вона показує користувачеві, які файли відкриваються та їх стан - і як інтерактивний пристрій - дозволяє користувачеві маніпулювати (упорядкувати, виділити, закрити ...) відкриті файли. Незважаючи на численні обмеження, вкладки є скрізь, і люди звикли до них і очікують їх скрізь.
Vim представив сторінки вкладок у 7.0 як спосіб для своїх користувачів створювати спеціальні "робочі простори". Ніщо в їхніх функціях, їх конкретних параметрах, конкретних командах або їх :help
розділах не говорить про те, що сторінки вкладок можуть або повинні використовуватися як проксі-файли.
Ніщо, крім назви та появи "сторінок вкладок", звичайно, що призводить до великої плутанини.
Без :set hidden
цього вимкнути за замовчуванням і не дуже легко знайти, Vim унеможливлює перехід на інший буфер, не записуючи поточний або не відмовляючись від його змін. Нові користувачі, не знаючи про цю опцію, не мають іншого вибору, крім того, щоб звернутися до використання важких вікон або до найближчої "вкладки" функції, яку вони можуть знайти: сторінки вкладок.
"Сторінка вкладки" - це невдалий вибір імені для цієї функції, особливо в епоху, де панує думка, що читання документації - це марна трата часу.
У Vim сторінки вкладок - це абстракція, побудована над вікнами, сама абстракція, побудована поверх буферів. Кожен новий рівень додає корисні функції, але обмежує ваш робочий процес.
"Буферний шлях"
З робочим процесом на основі буфера файли, з якими ви працюєте, розподіляються по одному виміру. Ви можете переходити через свої буфери, ви можете отримати доступ до певного буфера, ввівши частину його імені (із завершенням) або його номер, ви можете чергувати між буферами, ви можете легко націлити їх на них. В основному тертя немає.
Відкрито вісім буферів, видно лише один:
Перемикання за номером:
Перемикання по імені:
Буфери - це довірені файли Віма. Якщо ви думаєте з точки зору файлів, ви думаєте з точки зору буферів.
"Віконний шлях"
З робочим процесом на основі вікна ваші "файли" розподіляються вздовж одного і того ж "віртуального" виміру, як це було б, якби ви використовували лише буфери та уздовж двох інших "фізичних" розмірів. Але декартові простори, в яких знайдені ці розміри, майже повністю розділені: перехід до іншого буфера все ще означає "перехід до іншого файлу", а перехід до іншого вікна не означає. Буфер, який відповідає бажаному файлу, може відображатися у цьому вікні, але він також може бути відображений в іншому, можливо, на іншій сторінці вкладки, або зовсім не бути.
З вікнами навігація між відкритими файлами стає занадто складною або занадто спрощеною, навіть із 'switchbuf'
та :sb
. Переважно тому, що ви змушені використовувати два набори команд для того, що по суті одне і те ж: доступ до буфера.
У Windows використовується їх використання, як описано нижче, але вони не мають необхідного для заміни буферів у чиємусь робочому процесі.
Тут я працюю над кольоровою схемою Vim. Два вікна - це різні погляди одного і того ж буфера: верхнє служить орієнтиром із таблицею кольорових кодів, що використовуються у схемі кольорів, а нижнє - там, де я працюю:
Windows не розроблені як проксі-файли і не можуть бути перетворені в такі: вони є "контейнерами" або "вікнами перегляду", призначеними запропонувати вам переглянути в буфер. Ні більше, ні менше.
"Шлях вкладки"
За допомогою робочого процесу, заснованого на вкладках, ви по суті намагаєтесь імітувати користувацький досвід, до якого ви звикли з попереднього редактора, повністю ігноруючи саму природу сторінок вкладок Vim. Якщо ми на мить забудемо, що ця стратегія, як правило, дуже непродуктивна, також неможливо, як і у Windows, змусити Vim дотримуватися тієї парадигми "один файл = одна вкладка", не втрачаючи великої гнучкості.
Ще працюючи з тими ж файлами, що і вище, таблична лінія займає значне місце практично без користі. Всі мої файли та всі мої вкладки називаються, javascript*.vim
тому я не можу робити 3gt
і буду впевнений, що я опишусь у потрібному місці, і неможливо дістатись певної вкладки по імені. Додайте до цього той факт, що його мітка може бути дуже корисною, але цілком логічною [Quickfix List]
... Оскільки немає практичного способу прив’язати файл / буфер до сторінки вкладки, вам в основному залишається лише один практичний спосіб переходу між сторінками вкладок / буфери / файли: їзда на велосипеді.
І так, мій таблайн укладений лише з 8 вкладок, уявіть, якби у мене було 20!
Вісім буферів відкриті на восьми сторінках вкладок (неправильно)
Дві вкладки для двох конкретних завдань (праворуч)
Сторінки вкладок - це "контейнери" або "вікна перегляду", розроблені, щоб містити одне або більше вікон, самі ж "контейнери", призначені для розміщення буферів.
На закінчення
"Експерти Vim" (припустимо, я можу говорити так, ніби я був) не віддають перевагу буферам над вкладками: вони просто використовують Vim так, як він був розроблений, і цілком зручні з цим дизайном:
"Експерти Vim" завантажують 2, 30 або 97 буферів і дуже раді, що їм не доведеться мати справу з просторовим розподілом;
коли їм потрібно порівняти два файли або працювати в одній частині поточного буфера, зберігаючи інший як орієнтир, "Vim експерти" використовують вікна, тому що саме так вони призначені для використання;
коли їм потрібно деякий час працювати над окремою частиною проекту, не псуючи їх сучасний погляд, "Vim експерти" завантажують абсолютно нову сторінку вкладки.