Автоматически восстанавливать последнюю сессию в Gvim - PullRequest
4 голосов
/ 22 октября 2011

Я установил сессионник, и он работает нормально. Но я теряю сессию, когда дважды перезагружаю сессию X (выход / выход из системы, перезагрузку и т. Д.), Потому что, когда KDE восстанавливает Gvim, он не загружает сессию автоматически, а только последний файл, а затем сохраняет его под последним именем сессии при следующей перезагрузке. , Если я не запустил SessionOpen, то при следующей перезагрузке мой последний сеанс будет потерян.

Я уже настроил автосохранение сессии. Было бы неплохо, если бы Gvim мог автоматически загрузить последнюю сессию. Однако эта функция не работает для меня даже вручную. Когда я перезапускаю Gvim, SessionShowLast выдает «Последний сеанс не определен, текущий сеанс -« ».

Документация сессионника гласит: «Имя открытого сеанса сохраняется в переменной g: LAST_SESSION, которая сохраняется в файле viminfo, если опция« viminfo »содержит«! »». Но я не нашел четкого объяснения, что такое «опция viminfo», где она должна содержать «!» И как мне ее установить. Также я не уверен, как выполнить SessionOpenLast из vimrc.

Если способ, которым я пытаюсь решить проблему, неверен, пожалуйста, исправьте меня.

Ответы [ 2 ]

6 голосов
/ 22 октября 2011

viminfo - это переменная, которая описывает, какие данные должны храниться в файле viminfo.

Для получения полной информации запустите :help 'viminfo' (обратите внимание на кавычки) в vim:

    !       When included, save and restore global variables that start
            with an uppercase letter, and don't contain a lowercase
            letter.  Thus "KEEPTHIS and "K_L_M" are stored, but "KeepThis"
            and "_K_L_M" are not.  Nested List and Dict items may not be
            read back correctly, you end up with a string representation
            instead.                                

Используйте :set viminfo, чтобы увидеть текущее значение вашей настройки viminfo. Измените его в файле ~/.vimrc.

set viminfo='100,<500,s10,h,!

Поскольку vimrc загружается до плагинов, добавление SessionOpenLast к vimrc не будет работать. Чтобы решить эту проблему, создайте авто-команду:

autocmd VimEnter * SessionOpenLast
1 голос
/ 13 апреля 2015
  "My Sessionman Conf
  set viminfo='100,<500,s10,h,!
  let sessionman_save_on_exit = 1

  function! ReadSession()
  SessionOpenLast
  endfunction

  " if no file args then open the last session
  autocmd VimEnter * if argc() == 0 | call ReadSession() | endif
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...