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

时间:2012-02-14 17:29:27

标签: vim syntax-highlighting

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

mksession ~/session1.vim

并使用以下方法恢复它:

vim -S session1.vim

source session1.vim

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

我在这里发现了一个类似的问题:No syntax highlighting after session restore in terminal 但没有多大帮助。

有没有人有任何想法?

3 个答案:

答案 0 :(得分:23)

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

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

Wikia有一篇广泛的文章about loading and saving sessions。底部提到了'嵌套'选项。

我使用this StackOverflow answer的修改版本,现在是:

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

答案 1 :(得分:0)

我可以使用Obsession vim插件和Neovim来解决此问题。该线程中的答案帮助我找到了解决方案,尽管就我而言,此处提供的解决方案无法立即生效。

我查看了sessionoptions帮助页面。对我而言,解决问题的设置是set sessionoptions+=localoptions。然后在配置中使用此选项重新加载vim并重新加载语法突出显示后,突出显示已保存在会话中。

答案 2 :(得分:0)

我有同样的问题。我删除了会话文件,使用mks重新创建了该文件,从而解决了该问题。可能是处于不一致状态。