因为每次分割和加载每个窗口都有点麻烦,我使用以下方式保存了会话:
mksession ~/session1.vim
并使用以下方法恢复它:
vim -S session1.vim
或
source session1.vim
它完美地恢复了上一个会话,但根本没有显示任何语法突出显示。
我在这里发现了一个类似的问题:No syntax highlighting after session restore in terminal 但没有多大帮助。
有没有人有任何想法?
答案 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重新创建了该文件,从而解决了该问题。可能是处于不一致状态。