如何保存窗口,拆分和缓冲区布局?


56

我在一个存储库中正在处理多项任务。我想创建用于处理它们的“工作区”。

一个“工作区”或“缓冲区布局”将使我需要处理的所有文件都在我想要的布局中打开(使用^w+v^w+s分割窗口)。

然后,当我开始执行另一项任务时,我想保存当前的布局,移至另一项,但是我希望能够恢复到以前的布局。

实现此目标的最佳方法是什么?

Answers:


48

您可以使用vim :mksession并将每个“工作区”写入不同的文件,然后使用来重新打开会话vim -S session_file,但是,如果您愿意使用插件,那么我发现Startify插件正是这种情况所需的:https ://github.com/mhinz/vim-startify

在vim和mccvim中,它在管理会话方面做得非常好,打开vim时,它也为您提供了最近文件的列表。它将也自动为您切换到正确的工作目录。它还可以让您文件固定到“开始”打开屏幕,这对于轻松访问诸如.vimrc


23

您可以使用tpope的vim- obsession 插件轻松管理会话。它就像Vim内置的包装器一样mksession,但是也提供了其他一些优点。

您可以通过提供命令来保存当前会话(或缓冲区布局):Obsess。如果不提供参数,它将写入Session.vim默认情况下调用的会话文件。

要重新加载会话,请使用vim -S <session-name>:source <session-name>如果您已经在Vim中。

令人高兴的是,您不必记得每次退出Vim都保存会话。它由插件自动管理。

vim-obession的另一个非常重要的功能是它不保存选项和映射。mksession捕获当前的选项和映射,如果您只想保存缓冲区布局,则不希望发生。当插件更新等时,它也会干扰。


它可以管理多个会话文件吗?
Nebril

1
@Nebril可以。保存会话时,请使用格式:Obsess <session-name>。重新加载时,请使用您想要的特定会话名称。
thameera

我发现Obsession不记得垂直分割,而mksession记得。我今晚只是在弄弄这个,难道我错过了吗?
baxx

1
@baxx Obsession确实会记住各种拆分。也许您在退出vim之前关闭了拆分?
thameera 2015年

2
@baxx这是旧的,但我想添加一个注释,以防其他人使用。似乎痴迷忘了拆分的原因可能是因为您退出所有拆分以离开vim。这意味着最终状态是关闭vim时的最后一个窗口,这就是痴迷存储的内容。我在选项卡上遇到了同样的问题,答案是使用:qa退出所有打开的窗口,拆分,选项卡。如果有人有更好的选择,请告诉我们。
TC0072 '12

12

附带说明一下,我想指出的是,我构建了另一个插件dhruvasagar / vim-prosession作为tpope / vim-obsession的扩展,进一步增强了它的创建和管理默认情况下在集中式存储库中的vim会话的能力。每个目录中的每个配置,并在启动vim时自动加载它们,而目录中没有任何参数。它还方便您在不同的会话之间切换。


听起来很棒。如果我可以在类似于撤消和备份文件的文件夹中管理会话文件,以防止我的项目因交换文件而变得混乱不堪,那可能会让我大吃一惊。
dragon788 '18

1

您可以尝试使用vim-workspace插件,该插件的会话管理功能是自动的,适用于您当前的工作目录,并且非常简单(只需运行ToggleWorkspace一次)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.