如何在退出时自动保存 vim 会话并在启动时自动重新加载,包括拆分窗口状态? [英] How to auto save vim session on quit and auto reload on start including split window state?

查看:20
本文介绍了如何在退出时自动保存 vim 会话并在启动时自动重新加载,包括拆分窗口状态?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我喜欢将我的 vim 屏幕分成 3 个.一个 :vsplit 和一个 :split.我希望在关闭 vim 时保存这些窗口和我处理过的文件.我也希望这些窗口在我启动 vim 时自动加载.

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 automatically load when I start vim.

我尝试安装 gsessions(只是将文件添加到插件文件夹中),但是什么也没发生.我是 vim 的新手,所以我不知道配置是如何工作的.

I tried to install gsessions (just added the file to the plugin folder), but nothing happend. I am new to vim so I don't know exactly how the configuration works.

推荐答案

您可以使用 vimrc 进行每个目录会话:

You can do per directory sessions with this is your vimrc:

fu! SaveSess()
    execute 'call mkdir(%:p:h/.vim)'
    execute 'mksession! %:p:h/.vim/session.vim'
endfunction

fu! RestoreSess()
execute 'so %:p:h/.vim/session.vim'
if bufexists(1)
    for l in range(1, bufnr('$'))
        if bufwinnr(l) == -1
            exec 'sbuffer ' . l
        endif
    endfor
endif
endfunction

autocmd VimLeave * call SaveSess()
autocmd VimEnter * call RestoreSess()

这会使您的目录充满 .vim ,但您可以轻松修改它.此外,如果您不想为每个文件创建新窗口,请将 sbuffer 更改为 badd,并将 ssop-=buffers 添加到您的 vimrc.

That will litter your directories with .vim s, but you can easily modify that. Also, change sbuffer to badd if you don't want new windows for each file and add ssop-=buffers to your vimrc.

这篇关于如何在退出时自动保存 vim 会话并在启动时自动重新加载,包括拆分窗口状态?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆