Як зберегти макет вікна, розбиття та буфера?


56

У мене є кілька завдань, над якими я працюю в одному сховищі. Я хотів би створити "робочі простори" для роботи над ними.

Одне «робочий простір» або «буфер розташування» матиме всі файли , мені потрібно працювати над відкритим в макеті я хочу ( з допомогою ^w+v, ^w+sщоб розбити вікно).

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

Який найкращий спосіб досягти цього?

Відповіді:


48

Ви можете використовувати vim :mksessionта записувати кожну "робочу область" в інший файл, після чого знову відкривати сеанс, використовуючи vim -S session_file, однак, якщо ви відкриті для використання плагіна, то я вважаю, що плагін Startify є саме тим, що мені потрібно для такого сценарію: https : //github.com/mhinz/vim-startify

Це чудова робота з керуванням сеансами, у vim та mccvim, і дає вам список останніх файлів, а також під час відкриття vim. Він автоматично зміниться на потрібний робочий каталог і для вас. Вона також дозволяє прикріпити файли до startify відкрити вікно , а також, що приємно для легкого доступу до речей , як ваш.vimrc


23

Щоб легко керувати сеансами, ви можете використовувати плагін tpope -одержимості vim . Це як упаковка для вбудованого Vim mksession, але також надає набір інших смаків.

Ви можете зберегти поточний сеанс (або макет буфера), подавши команду :Obsess. Якщо ви не надаєте аргумент, він записує файл сеансу, який називається Session.vimза замовчуванням.

Щоб перезавантажити сеанс, використовуйте vim -S <session-name>або :source <session-name>вже в Vim.

Приємно, що вам не потрібно пам'ятати, щоб зберігати сеанс кожного разу, коли виходите з Vim. Він автоматично управляється плагіном.

Ще одна дуже важлива особливість vim-obession - це те, що він не економить варіанти та карти. mksessionфіксує поточні параметри та карти, які ви не хочете, щоб це сталося, якщо ви просто хочете зберегти макет буфера. Також він заважає, коли плагін оновлюється тощо.


Чи може він керувати кількома файлами сеансу?
Небріл

1
@Nebril Це може. Коли ви зберігаєте сеанс, використовуйте формат :Obsess <session-name>. Використовуйте конкретне ім'я сеансу, яке ви хочете під час перезавантаження.
thameera

Я виявив, що Obsession не пам’ятає вертикальних розщеплень, тоді як mksession зробив. Я лише сьогодні з цим возився, чи щось я пропустив?
baxx

1
@baxx Одержимість пам’ятає всілякі розколи. Можливо, ви закрили спліт, перш ніж вийти з vim?
thameera

2
@baxx Це старе, але я хотів додати нотатку, якщо це допомагає комусь іншому. Причина, по якій це виглядає так, ніби одержимість забуває розколи, ймовірно, тому, що ви кидаєте всі свої розколи, щоб залишити vim. Це означає, що остаточний стан - це ваше останнє вікно, коли ви закриваєте vim, ось що одержимість зберігає. У мене була така ж проблема з вкладками, і відповідь полягає у використанні: qa, щоб закрити всі відкриті вікна, розбивки, вкладки. Якщо у когось кращий варіант, будь ласка, повідомте нам про це.
TC0072

12

Як бічну зауваження, я хочу зазначити, що я створив ще один плагін dhruvasagar / vim-prosession як розширення до tpope / vim-obsession, що ще більше сприяє створенню та керуванню сеансами vim за замовчуванням у централізованому сховищі як за конфігурацію на основі каталогу та завантажує їх автоматично під час запуску vim без аргументів у каталозі. Це також дозволяє переключатися між різними сеансами для зручності.


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

1

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.