Використовуйте вкладки Vim як буфери

Я розглянув можливість використовувати вкладки у vim (з: tabe,: tabnew тощо) як заміну моїй поточній практиці відкривати файли в одному вікні у прихованих буферах.

буфери

Я хотів би, щоб кожен окремий файл, який я відкрив, завжди знаходився на своїй вкладці. Однак є деякі речі, які цьому заважають. Як я можу виправити ці проблеми:

Коли команди, такі як gf та ^], переходять до місця в іншому файлі, файл відкривається в новому буфері на поточній вкладці. Чи є спосіб для всіх цих команд відкрити файл на новій вкладці або перейти на існуючу вкладку з файлом, якщо він уже відкритий?

При зміні буферів я можу використовувати: b

і це завершить імена файлів у існуючих буферах.

може бути навіть серединою імені файлу замість початку. Чи є еквівалент зміни вкладки?

Зупинка зупинка зупинка.

Вкладки Vim призначені не для використання. Насправді їх неправильно називають. Кращою назвою буде "viewport" або "layout", тому що це те, що таке вкладка - це інше розташування вікон усіх ваших існуючих штампів.

Спроба перемогти Vim за 1 вкладку == 1 буфер - марна вправа. Vim не знає і не турбується, і він не буде виконувати жодних команд, зокрема, все, що використовує буфер швидкого виправлення (: make,: grep та: helpgrep - це ті, що приходять на розум), із задоволенням ігноруватиме вкладки, і в ньому немає нічого Ви можете зробити, щоб зупинити це.

  • : встановлено приховано
    Якщо у вас ще немає цього набору, зробіть це. Це змушує vim працювати як будь-який інший редактор кількох файлів на планеті. Можливо, у вас є модифіковані буфери, які десь не видно у вікні.
  • Використання: bn,: bp,: b #,: b name та ctrl-6 для перемикання між буферами. Мені подобається ctrl-6 (сам по собі він перемикається на раніше використовуваний буфер або # ctrl-6 перемикається на номер буфера #).
  • Використовуйте: ls для переліку буферів або плагіна, такого як MiniBufExpl або BufExplorer .

Трохи запізнився на вечірку тут, але з подивом не побачив у цьому списку наступного:

: tab sball - це відкриває нову вкладку для кожного відкритого буфера.

: help switchbuf - це керує поведінкою перемикання буфера, спробуйте: set switchbuf = usetab, newtab. Це має означати перехід на існуючу вкладку, якщо буфер відкритий, або створення нової в іншому випадку.

Vim: вікно довідки досить добре пояснює плутанину "tabs vs buffers".

Буфер - це текст у пам'яті файлу.
Вікно - це вікно в буфері.
Сторінка вкладки - це сукупність вікон.

Відкриття декількох файлів здійснюється в vim with тампони . В інших редакторах (наприклад, notepad ++) це робиться з вкладками, тому вкладка імені у vim може ввести в оману.

Вікна призначені для розподілу робочої області та відображення декількох файлів (буферів) разом на одному екрані. В інших редакторах цього можна було досягти, відкривши кілька вікон графічного інтерфейсу та переставивши їх на робочому столі.

Нарешті, в цій аналогії, вкладки vim відповідав би кільком робочим столам, тобто різним перестановкам вікон.

В якості довідки: вкладка пояснює Vim, сторінку вкладки можна використовувати, коли хтось хоче тимчасово змінити файл, але не хоче нічого змінювати в поточному розташуванні вікон та буферів. У такому випадку інша сторінка вкладки може використовуватися лише з метою модифікації цього конкретного файлу.

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

На відміну від деяких інших відповідей тут, я кажу, що ви можете використовувати вкладки як завгодно. vim був розроблений для того, щоб бути універсальним та настроюваним, а не змушувати вас працювати за попередньо визначеними налаштуваннями. Ми всі знаємо, як ми, програмісти, любимо нав'язувати свою "етику" всім іншим, тому це досягнення, безумовно, є ознакою.

gf - еквівалент табуляції команди gf buffer. і буде переключатися між вкладками. (У Byobu ці дві команди ніколи не працюють для мене, але вони працюють поза Byobu/tmux. Альтернативами є gt та gT.) T Перемістить поточне вікно на нову сторінку вкладки.

Якщо ви віддаєте перевагу vim використовувати існуючу вкладку, якщо це можливо, а не створювати дублікат вкладки, додайте її: set switchbuf = usetab у свій файл .vimrc. Ви можете додати newtab до списку (: set switchbuf = usetab, newtab), щоб змусити команди QuickFix, які відображають помилки компіляції, відкриватися в окремих вкладках. Я віддаю перевагу split замість цього, що відкриває помилки компіляції у вікні split.

Якщо підтримку миші ввімкнено за допомогою: set mouse = a, ви можете взаємодіяти з вкладками, натискаючи на них. Також за замовчуванням є кнопка +, яка створює нову вкладку.

Для отримання документації щодо вкладок введіть: help tab-page у звичайному режимі. (Після цього ви можете потренуватися в переміщенні вікна на вкладку за допомогою T.) Існує довгий список команд. Деякі команди вікна призначені для вкладок, тому ви також можете переглянути цю документацію за допомогою: help windows .

Додано: 19.12.2013

Щоб відкрити кілька файлів у vim з кожним файлом на окремій вкладці, використовуйте vim -p file1 file2. . Якщо ви схожі на мене і завжди забуваєте додати -p, ви можете додати його наприкінці, оскільки vim дотримується звичайних правил аналізу параметрів командного рядка. Ви також можете додати відображення псевдоніма bash vim до vim -p .