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

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


当前回答

有一个叫vim-session的插件。它非常强大。安装方法:

cd ~/.vim/bundle
git clone https://github.com/xolox/vim-session.git

我在我的.vimrc文件中映射了它的功能,就像这样:

nnoremap <leader>so :OpenSession 
nnoremap <leader>ss :SaveSession 
nnoremap <leader>sd :DeleteSession<CR>
nnoremap <leader>sc :CloseSession<CR>

现在在正常模式下输入<leader>ss,你会看到这样的命令

:SaveSession 

现在添加会话的名称

 :SaveSession namesession

就这些。

当你关闭Vim并重新打开它时,就这么做

 :OpenSession

你会看到你的会议开始了。

在你的.vimrc文件中还有很多其他的配置需要添加,参见文档中的例子:

let g:session_directory = "~/.vim/tmp/session"  // the directory must be created before the sessions will be saved there
let g:session_autoload = "no"                   // automatic reload sessions
let g:session_autosave = "no"                   // autosave
let g:session_command_aliases = 1

YouTube上有一个很好的教程。

其他回答

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

有一个叫vim-session的插件。它非常强大。安装方法:

cd ~/.vim/bundle
git clone https://github.com/xolox/vim-session.git

我在我的.vimrc文件中映射了它的功能,就像这样:

nnoremap <leader>so :OpenSession 
nnoremap <leader>ss :SaveSession 
nnoremap <leader>sd :DeleteSession<CR>
nnoremap <leader>sc :CloseSession<CR>

现在在正常模式下输入<leader>ss,你会看到这样的命令

:SaveSession 

现在添加会话的名称

 :SaveSession namesession

就这些。

当你关闭Vim并重新打开它时,就这么做

 :OpenSession

你会看到你的会议开始了。

在你的.vimrc文件中还有很多其他的配置需要添加,参见文档中的例子:

let g:session_directory = "~/.vim/tmp/session"  // the directory must be created before the sessions will be saved there
let g:session_autoload = "no"                   // automatic reload sessions
let g:session_autosave = "no"                   // autosave
let g:session_command_aliases = 1

YouTube上有一个很好的教程。

如果你使用NERDTree作为文件资源管理器/dash,我推荐xolox/vim-session插件,而不是内置的:mksession命令。由于某种原因,:mksession无法恢复NERDTree缓冲区。你的观点可能不同,但我想分享一下我的经验。

就我个人而言,我只是包装了Tim Pope的Obsession插件,以允许定义一个sessiondir,并避免输入路径:

let g:sessiondir = $HOME . ".vim/sessions"

command! -nargs=1 MkSession call MkSession(<f-args>)
function! MkSession(sessionfile)
  if !isdirectory(g:sessiondir)
    call mkdir(g:sessiondir, "p")
  endif
  exe 'Obsession' g:sessiondir . '/' . a:sessionfile
endfunction

command! -nargs=1 LoadSession call LoadSession(<f-args>)
function! LoadSession(sessionfile)

  let a:sessionpath = g:sessiondir . a:sessionfile
  if (filereadable(a:sessionpath))
    exe 'source ' a:sessionpath
  else
    echo "No session loaded."
  endif
endfunction

您可能希望在vimrc中设置这些会话选项。特别是当您在保存会话之后更改了vimrc时,选项非常烦人。

set ssop-=options    " do not store global and local values in a session
set ssop-=folds      " do not store folds