Что хранит сеанс
То, что сохраняется в сохраненном сеансе, управляется параметром :help 'sessionoptions'
.Стандартные настройки очень консервативны и направлены на то, чтобы не потерять какие-либо специальные сопоставления или измененные параметры.
Однако большинство пользователей помещают свои настройки в ~/.vimrc
, используют плагины и плагины файлового типа и, как правило, не составляютсопоставления или изменения настроек на лету.Если этот тип рабочего процесса также применим к вам, я бы предложил удалить следующие значения:
:set sessionoptions-=globals
:set sessionoptions-=localoptions
:set sessionoptions-=options
Вы также можете удалить buffers
и resize
.Это изменение не только уменьшает размер сохраненного сеанса, но также предотвращает переопределение старого сеанса любой конфигурацией, измененной вами в ~/.vimrc
.
vimrc reload
Таким образом, ваш ~/.vimrc
не перезагружается напрямую, но (по умолчанию 'sessionoptions'
), многие параметры и переменные восстанавливаются.
Используя :augroup
, затем :autocmd!
, вытакже избежал частой ошибки новичка: без этого autocmds будет переопределяться при каждой перезагрузке вашего ~/.vimrc
.:autocmd!
предотвращает это, а :augroup
делает это применимым только к вашей собственной группе.
сессий и специальных (подключаемых) буферов
Сеанс должен хранить все открытые в данный момент буферы.Обычные буферы содержат содержимое файла, и они могут быть легко перезагружены при повторном открытии сеанса.К сожалению, плагины (неправильно) используют буферы для своих пользовательских интерфейсов (например, боковой панели, как в плагине netrw ), и обработка сессий Vim не достаточно умна, чтобы различать их.Но у этих буферов плагинов нет соответствующего файла;вместо этого плагин использовал команду для непосредственного построения и изменения своего содержимого, часто с помощью переменных плагина, которые - см. выше - либо сохраняются, либо восстанавливаются или не сохраняются.
Плагины должны были бы явно обрабатывать восстановление сеанса;Я не помню ни одного плагина, который бы это делал.Очень часто вы увидите, что «пустое» окно восстановлено, и плагин может или не может распознать или использовать это повторно.(И я думаю, что это проблема, о которой вы спрашиваете.)
Общая рекомендация - закрыть все буферы плагинов перед сохранением сеанса , либо вручную, либо написав пользовательский :Mksession
Оболочка, которая автоматизирует это для вас.При перезагрузке сеанса ваша конфигурация может снова создать новое функциональное окно плагина.(Или вы должны вызвать это вручную.)