Подсветка синтаксиса не работает после восстановления предыдущей сессии vim

так как разделение и загрузка каждого окна каждый раз кажутся вам докучливыми, я сохранил сеанс, используя:

mksession ~/session1.vim

и восстановил его, используя:

vim -S session1.vim

или

source session1.vim

он отлично восстанавливает предыдущий сеанс, но не выделяет подсветку синтаксиса вообще.

Я нашел аналогичный вопрос: Отсутствие подсветки синтаксиса после восстановления сеанса в терминале но не очень помогает.

Есть ли у кого-нибудь идеи?

Ответ 1

У меня была та же проблема; если я сохранил сеансы без "параметров" в сеансах, когда я перезагрузил Vim, буферы перезагружались, но без подсветки синтаксиса.

Решение заключается в использовании autocmd с вложенным при перезагрузке.

В Wikia есть обширная статья о загрузке и сохранении сеансов. Опция "вложенная" упоминается внизу.

Я использую измененную версию fooobar.com/info/20290/..., вот он:

fu! SaveSess()
  execute 'mksession! ' . getcwd() . '/.session.vim'
endfunction

fu! RestoreSess()
  if filereadable(getcwd() . '/.session.vim')
    execute 'so ' . getcwd() . '/.session.vim'
    if bufexists(1)
      for l in range(1, bufnr('$'))
        if bufwinnr(l) == -1
          exec 'sbuffer ' . l
        endif
      endfor
    endif
  endif
endfunction

autocmd VimLeave * call SaveSess()
autocmd VimEnter * nested call RestoreSess()

set sessionoptions-=options  " Don't save options