是否有任何插件/方法来管理Vim中的多个项目?

是否有任何插件/方法来管理Vim中的多个项目?,vim,plugins,project-management,Vim,Plugins,Project Management,我总是同时从事多个项目。我所拥有的档案数目如下: Project | Files -------------------------- Thesis 20 Simulator 50 Plots 30 Graphs 30 Website 500+ 将所有这些文件放在一个窗口中很麻烦。有几种选择,我将讨论他们的缺点,或者我敢说他们的致命弱点 拆分窗口我可以将vim拆分为5个窗口,每个项目一个,

我总是同时从事多个项目。我所拥有的档案数目如下:

  Project   |   Files
--------------------------
  Thesis         20
  Simulator      50
  Plots          30
  Graphs         30
  Website        500+
将所有这些文件放在一个窗口中很麻烦。有几种选择,我将讨论他们的缺点,或者我敢说他们的致命弱点

  • 拆分窗口我可以将vim拆分为5个窗口,每个项目一个,但我也可以通过一个针孔进行编码。事实上,我从来都不喜欢分割窗口,除非你经常比较和编辑两个相关的文件。此外,我发现在二维空间中导航并不像在水平方向上那样无缝

  • 选项卡选项卡,或者更确切地说,被愚蠢地称为选项卡的视口,似乎正是针对这种问题的,但它们并没有为缓冲区的使用提供限制。例如,如果我在我的
    论文
    选项卡中,我只想浏览这20个缓冲区,而不是所有500多个与网站相关的缓冲区。当我将这些内容保存为会话时,如果我不小心切换到我的
    论文
    选项卡中的
    网站
    缓冲区,退出,然后在进入后我有两个
    网站
    选项卡,可能会导致问题。这是进一步的问题,因为我为每个选项卡设置了本地目录(
    :lcd

  • 终端选项卡使用终端选项卡可确保每个选项卡中的缓冲区保持独立。但是,每个vim会话不能再共享信息。我无法将文本从一个终端拉到另一个终端(我想我可以拉到
    +
    寄存器中)。我也不能再在所有缓冲区上使用
    :buffdo
    。此外,我喜欢这样一个事实:我可以将我所有的vim选项卡保存到一个会话中

  • 我知道这对公众讨论来说是一种诅咒,因此我将转而询问是否存在实现我所追求的功能的方法

    编辑总结我需要的东西的一个好方法是说我想要“子缓冲区”

    编辑我想从vim中的选项卡中得到的是更有效地使用它们的能力:视口。我想能够有一个标签专门为我的论文部分。在本节中,我将更改本地目录以反映它。此外,我想过滤掉该表中的缓冲区,使其仅成为所有缓冲区的子集。类似地,在模拟器选项卡中,我想将其专门用于我的模拟器文件

    基本上,我想要的是通过选项卡运行多个独立的vim会话的能力,但仍然有一些附加功能(即共享寄存器以便能够拖动)

    我同意ehamberg的观点

    Vim的缓冲区是全局的,所以任何分组或拆分看起来只工作几分钟,实际上在第一次出现时就中断了

    而是为每个项目使用一个Vim实例。如果您确实需要共享某些内容,您可以始终使用系统剪贴板。尝试将Vim的默认寄存器与系统剪贴板同步

    但我想知道你管理项目的方式是否合理:

    • 在第3点中,您写道“我也不能再在所有缓冲区上使用:buffdo。”。为什么要使用在多个不同项目的所有打开缓冲区上工作的命令

    • 您真的同时打开了500多个缓冲区吗?我知道Vim可能可以处理它,但为什么要打开那么多缓冲区?我以网络开发为生,而且我很少在一天内处理十几个以上的文件,即使是“大型”项目


      • 我找到了一种方法。vim卡舌几乎无用。相反,我使用了Gnome终端选项卡

      • 全局寄存器要模拟使用全局寄存器,以便能够跨vim的不同实例复制粘贴,请通过将行
        set clipboard=unnamedplus
        添加到.vimrc文件,将系统剪贴板和未命名寄存器“管道”在一起。这具有所有拉伸/删除的效果。。。正在复制到系统剪贴板的操作。从那里,vim的其他实例将可以访问它。类似地,在vim之外进行的任何复制粘贴现在都将存储在未命名寄存器中

      • Gnome终端选项卡快捷键转到下一个和上一个选项卡的默认快捷键是Ctrl-Pg Up和Ctrl-Pg Dn。由于我对下一个和上一个缓冲区使用Shift k和Shift j,所以我将Ctrl k和Ctrl j映射到下一个和上一个选项卡。只需转到Gnome终端>编辑>键盘快捷键

      • Gnome终端选项卡编写一个shell脚本,将每个vim实例作为新的终端选项卡启动

      • Vim实例最后,为每个Vim实例保存一个会话文件
        :mksession fileName

      • 它并不完美(例如,命名寄存器不能跨终端复制),但在我看来,它更能代表视口(这里称为“选项卡”)的功能



        编辑我实际上已经回到了使用vim选项卡。我学习了vim脚本,并将我的键映射到ShiftJ和ShiftK映射到上一个/下一个缓冲区,CtrlJ和CtrlK映射到上一个/下一个选项卡。然后我下载了脚本,以便设置有意义的选项卡名称,然后修改vim会话的制作以保存选项卡名称(请参阅),然后从gVim切换回vim,以便使用全屏模式。这是一个漫长而艰苦的旅程,但我认为这是值得的。

        BufExplorer插件可以按标签对缓冲区进行分组。CtrlP插件可以重用来自另一个选项卡的缓冲区。

        我使用多个vim实例来同时处理不同的项目,但这并不令人满意。我最终不得不在终端中打开许多选项卡

        我一直在使用VimRooter,这是一个简单的插件,可以自动改变工作状态