NeoVim: переключение между наборами открытых вкладок в зависимости от ветки git.
Работая над несколькими разными ветвями в репозитории git, я обнаружил, что хочу, чтобы разные наборы файлов открывались на разных вкладках. Есть ли какой-нибудь плагин или способ по существу «сохранить» текущее состояние открытых вкладок при извлечении другой ветки, а когда исходная ветка снова извлекается - этот набор вкладок восстанавливается? В идеале можно было бы сохранить состояние вкладок нескольких разных ветвей.
Одним из вариантов может быть запуск нескольких экземпляров NeoVim и управление им путем приостановки процессов таким образом, чтобы они не расстраивались из-за открытия одного и того же файла.
1 ответ
Большая проблема с переключением ветвей в Vim заключается в том, что буферы, регистры, история и т. д. являются глобальными, что затрудняет построение рабочих процессов, не соответствующих этому шаблону. А еще есть файлы подкачки, постоянные файлы отмены и т. д. Например, некоторые файлы могут исчезнуть из вашей файловой системы при переключении ветки, но вам придется удалить любую ссылку на них в Vim, что может быть не так тривиально, как кажется.
Более экономичной стратегией было бы рассматривать каждую ветку как отдельный проект:
- используйте рабочее дерево Git , чтобы иметь одно «рабочее дерево» (читай «каталог») для каждой ветки,
- иметь один экземпляр редактора на каждое рабочее дерево.
На практике это будет выглядеть так:
$ git worktree add ../this-project_some-branch some-branch
$ cd ../some-branch
$ vim .
Имея одну вкладку эмулятора терминала для каждого «проекта/рабочего дерева/Vim», вы сможете получить отдельные и стабильные среды.