根据我在Vim的任务,我有几个选项卡打开。

如何保存不同的会话以供以后使用?


当前回答

注意:mksession不会将所做的更改保存到任何文件中。我犯了这个错误,在保存会话后关闭vim,假设我将从那里开始。但是当我再次打开会话时,我对文件所做的更改已经消失了。

其他回答

由于@mathielo 下面是来自@mathielo的例子,我在.vimrc中添加了下面的行来保存活动会话(如果有的话):

au VimLeave * if this_session != "" | exe "mksession! ".this_session

如果你想放更多的行,你需要使用endif:

au VimLeave * if v:this_session != ""
au VimLeave *   exe "mksession! ".this_session
au VimLeave * endif

您只需要在vim with中保存一个新会话

:mks [Session filename]

开始之后

$ vim -S [Session filename]

Vim将启动会话,您不必担心每次关闭Vim时都要保存会话。

如果没有活动会话,vimrc将不会做任何事情。像以前一样。

这就是我要找的!再次感谢@mathielo!

如果你计划只有一个阶段的项目,那就这样做

:mks

这将创建一个Session。Vim文件在当前目录,然后打开会话(从同一目录):

vim -S

如果您更改会话并想要保存它:

:mks!

这将保存会话,而不是文件本身!

如果你计划有多个会话,我更喜欢将它们保存在项目目录中的隐藏文件中:

:mks .session-name.vim

打开它(从同一目录):

vim -S .session-name.vim

保存会话:

:mks! .session-name.vim

由于会话保存在隐藏文件中,要查看它们不要忘记-a

ls -a

这个任务有一个非常有用的插件vim-startify,它可以处理许多其他的事情,比如最近打开的文件等,它也有一个非常简单的界面。

我使用它几天了,直到现在它工作得很好。希望对你有所帮助。

下面是唯一一个对我有用的对话。我从这里开始,你也可以从这里得到一个更完整/复杂的版本。

set viewoptions+=cursor,folds,slash,unix
set viewoptions-=options

augroup vimrc
    autocmd BufWritePost *
    \   if expand('%') != '' && &buftype !~ 'nofile'
    \|      mkview
    \|  endif
    autocmd BufRead *
    \   if expand('%') != '' && &buftype !~ 'nofile'
    \|      silent loadview
    \|  endif
augroup END

为了管理多个会话(在每个目录/回购的基础上),我最近从vim-session插件切换到vim-workspace。它的会话管理相对简单,工作得很好。