我想知道这个常见的IDE功能是否可用。
假设我使用Vim打开了许多文件,使用vsplit
和split
。然后,我关闭了一切。
第二天,我想要恢复这些文件。也就是说,恢复它们的打开方式,而不必再打开每一个(再次使用split
和vsplit
)。
这可能吗?
更新:
使用mksession!
和source
命令映射.vimrc
文件中的命令,有没有办法参数化映射以便编写特定文件?
例如:
map <F2> :mksession! ~/vim_session @INSERT_HERE<cr> "Save session to @INSERTHERE file
提前致谢
答案 0 :(得分:91)
您可以使用:mksession和:source映射到一组键,以便于保存和恢复。这是我的.vimrc中使用F2和F3的示例:
map <F2> :mksession! ~/vim_session <cr> " Quick write session with F2
map <F3> :source ~/vim_session <cr> " And load session with F3
答案 1 :(得分:10)
查看:mksession
命令,创建session
:
会话保留所有人的视图 窗口,加上全局设置。 您可以保存会话以及何时保存 稍后将窗口布局恢复 看起来一样。您可以使用会话 快速切换不同 项目,自动加载 你最后在那里工作的文件 项目
答案 2 :(得分:2)
您可以考虑使用GNU Screen。简而言之:它是一个命令行窗口管理器,允许用户在单个终端会话中访问多个单独的终端会话。我的主要优点是你可以分离会话,关闭你的终端窗口,然后重新连接会话,然后继续工作。
答案 3 :(得分:2)
我发现的最佳方法是使用vim-session插件,http://github.com/xolox/vim-session可以通过添加来安装:
Plugin 'xolox/vim-session'
到您的.vimrc,然后是:
:PluginInstall
此插件支持多个会话:您按名称标识会话,然后使用该名称进行管理。可以添加,删除,更新,列出会话......
我已经使用它好几个月了;强烈推荐。
答案 4 :(得分:1)
您可能对本书感兴趣:
http://www.swaroopch.com/notes/Vim#Download
这是他们向您展示的最初几件事之一,作为Vim伟大的一个例子。 ;)
此外,<cr>
代表回车。
答案 5 :(得分:1)
SessionMan http://www.vim.org/scripts/script.php?script_id=2010 提供更简单的功能小心miniBufExplorer。它是不兼容的,除非您使用由andrew on vim_use创建的修改版本(即便如此,它只是中途兼容)
答案 6 :(得分:1)
我的解决方案如下,将它们放在.vimrc文件中。 HTH。
" session related.
" Default session is located `~/.session_'. The suffix `_' is a dirty
" solution, just like the one-element tuple `(tuple_eliment,)' in Python..
cnoremap <C-O> source ~/.session_
cnoremap <C-S> mksession! ~/.session_
nnoremap <silent> <C-S><C-S> :mksession! ~/.session_ <CR>
似乎更复杂,但如果您有多个要保存和加载的会话,则非常有用。
P.S。
在这里,我采用了熟悉的<Ctrl-S>
和<Ctrl-O>
快捷方式来保存和加载会话。恕我直言,这比向<Fn>
键伸出手更舒服。 ; - )
答案 7 :(得分:0)
我建议使用vim-obsession。它比默认的mksession
要好得多,因为它仍然可以保持你想做的事情。
答案 8 :(得分:0)
根据hgmnz的回答并扩展更新。
您可以从映射中删除<cr>
,这将使您进入命令模式以完成命令。
map <F2> :mksession! ~/<will stop here and you can type>
进入命令模式时,您可以键入%然后按Tab键,它将展开到当前文件的绝对路径,您也可以键入%:p:h并按Tab键展开到当前文件的目录。
您还可以将每个会话保存到工作目录,通过使用本地缓冲区目录,您可以为工作目录创建多个会话。
map <F2> :mksession! ./.vim_sessions <cr> " Will save session to current buffers directory.
map <F3> :source ./.vim_sessions <cr>
:lcd " Changes the current's buffer directory
还要注意重新加载会话,因为它会卸载所有当前加载的缓冲区(http://vimdoc.sourceforge.net/htmldoc/starting.html#%3Amksession)
- 卸载所有当前加载的缓冲区。
醇>