Vim的最佳(Linux兼容)缓冲区/会话管理器是什么?

gat*_*ado 6 vim

vim有一个好的项目/会话管理器吗?一个会话(或项目)是文件,例如命名名单"bitonic_sort"可识别的文件"〜/ A/bitonic_sort.sk", "〜/ B/bitonic_sort.smt2",等等.

(理由)我有一个项目,我需要编辑来自许多不同位置的文件,每次我恢复工作时手动打开它们太麻烦了.(所以,看起来像nerdtree这样的姐妹问题,最喜欢的(G)Vim插件/脚本?,将无法工作).我还需要针对不同项目的单独会话(即文件列表),而不仅仅是最近的文档列表.

在将所有文档作为缓冲区加载之后,对它们之间进行切换的任何增强都是一个优点(例如,开始键入名称,并显示匹配的文档).提前致谢.

tun*_*ngd 9

Vim有内置的会话管理器.要保存当前会话,请使用:

:mks session1.vim
Run Code Online (Sandbox Code Playgroud)

这基本上创建了一个名为session1.vim的Vim脚本,如果您使用它来恢复打开的文件,或者像这样启动Vim:

vim -S session1.vim
Run Code Online (Sandbox Code Playgroud)

要覆盖已保存的会话,请使用:mks! your_saved_session.vim.结合自定义键映射,这将是解决方案.有关Vim会话读取的更多信息:help :mks.Vim还有一个非常相似的视图管理器.阅读更多::help :mkview

要在缓冲区之间切换,可以使用FuzzyFinder ; 但我更喜欢这个关键地图:

nmap <C-tab> :bn<CR>
imap <C-tab> <ESC>:bn<CR>i
Run Code Online (Sandbox Code Playgroud)

添加到.vimrc我可以使用Ctrl + Tab在Firefox标签之间切换缓冲区.希望这有帮助.

  • 是的,这是一个好主意.谷歌搜索后,我找到了这个Vim脚本[vim-session](http://github.com/xolox/vim-session).它附带了一些我不需要的额外功能,所以我借用了一些代码并提出了这个:`au VimLeavePre*if v:this_session!=''| 执行"mks!".v:this_session | 将此添加到.vimrc中,当前会话将在退出时自动保存. (2认同)