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

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

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

什么是最好的方法实现这一目标?

#1 楼

您可以使用vim的:mksession并将每个“工作区”写入不同的文件,然后使用vim -S session_file重新打开会话,但是,如果您愿意使用插件,那么我发现vim-startify插件正是我需要的一种

在vim和mccvim中管理会话非常出色,并且在打开vim时还为您提供了最近文件的列表。它也会自动为您切换到正确的工作目录。它还可以让您将文件固定到启动窗口,这对于轻松访问.vimrc之类的内容非常有用。

#2 楼

您可以使用tpope的vim-obsession插件轻松管理会话。它就像Vim内置的mksession的包装一样,但是还提供了其他一些功能。如果不提供参数,则默认情况下会写入一个名为:Obsession的会话文件。

如果您已经在Vim中,请使用Session.vimvim -S <session-name>重新加载会话。默认情况下,不带参数的:source <session-name>将显示为vim -S。它由插件自动管理。

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

评论


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

– Nebril
2015年2月4日,11:32

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

– thameera
15年2月4日在11:35

我发现Obsession不记得垂直分割,而mksession记得。今晚我只是在弄弄这个,有什么我想念的吗?

–baxx
2015年4月17日下午0:07

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

– thameera
2015年9月6日下午4:27

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

–TC0072
18/12/9在15:12

#3 楼

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

评论


听起来很棒。如果我可以在与撤消和备份文件类似的文件夹中管理会话文件,以防止我的项目被交换文件弄得一团糟,这些交换文件可能会让我感到震惊。

–dragon788
18年5月15日在17:06

#4 楼

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