恢复以前的vim会话后,语法突出显示不起作用

dev*_*van 15 vim syntax-highlighting

因为每次分割和加载每个窗口都有点麻烦,我使用以下方法保存了我的会话:

mksession ~/session1.vim
Run Code Online (Sandbox Code Playgroud)

并使用以下方法恢复它

vim -S session1.vim
Run Code Online (Sandbox Code Playgroud)

要么

source session1.vim
Run Code Online (Sandbox Code Playgroud)

它完美地恢复了上一个会话,但根本没有显示任何语法突出显示.

我在这里发现了一个类似的问题:终端会话恢复后没有语法突出显示, 但没有多大帮助.

有谁有想法吗?

tit*_*usd 23

我有同样的问题; 如果我在sessionoptions中保存没有'options'的会话,当我重新加载Vim时,缓冲区被重新加载,但没有语法高亮.

解决方案是在重新加载时使用嵌套的autocmd.

Wikia有一篇关于加载和保存会话的文章.底部提到了'嵌套'选项.

我使用了这个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
Run Code Online (Sandbox Code Playgroud)