syntax highlighting doesn't work after restore a previous vim session

后端 未结 3 1683
自闭症患者
自闭症患者 2021-02-07 06:22

since dividing and loading each windows every time are kinda bothersome, I saved my session using:

mksession ~/session1.vim

and restored it usi

3条回答
  •  独厮守ぢ
    2021-02-07 07:00

    I had the same problem; if I saved sessions without 'options' in sessionoptions, when I reloaded Vim, the buffers were reloaded, but without syntax highlighting.

    The solution is to use an autocmd with nested when reloading.

    Wikia has an extensive article about loading and saving sessions. The 'nested' option is mentioned at the bottom.

    I use a modified version of this StackOverflow answer, here it is:

    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
    

提交回复
热议问题