Подсветка синтаксиса не работает после восстановления предыдущего сеанса VIM - PullRequest
15 голосов
/ 14 февраля 2012

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

mksession ~/session1.vim

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

vim -S session1.vim

или

source session1.vim

прекрасно восстанавливает предыдущую сессию, но вообще не показывает подсветку синтаксиса.

Я нашел похожий вопрос здесь: Нет подсветки синтаксиса после восстановления сеанса в терминале но не сильно помогает.

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

1 Ответ

23 голосов
/ 10 мая 2012

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

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

В Викии есть обширная статья о загрузке и сохранении сессий .Опция 'nested' упоминается внизу.

Я использую модифицированную версию этот ответ StackOverflow , вот он:

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
...