How to auto save vim session on quit and auto reload on start including split window state?

前端 未结 8 718
孤城傲影
孤城傲影 2020-12-13 04:35

I like to split my vim screen in 3. one :vsplit and one :split. I want these windows and the files I worked on to be saved when I close vim. I also want these windows to aut

8条回答
  •  刺人心
    刺人心 (楼主)
    2020-12-13 05:19

    I modified 2ck's script slightly to save a .session.vim in your current working directory instead of the directory where your current open file is in.

    Also, it checks if the file exists before sourcing it.

    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()
    

提交回复
热议问题