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

puk*_*puk 7 vim plugins project-management

我总是同时处理多个项目.我拥有的文件数量细分如下

  Project   |   Files
--------------------------
  Thesis         20
  Simulator      50
  Plots          30
  Graphs         30
  Website        500+
Run Code Online (Sandbox Code Playgroud)

将所有这些文件放在一个窗口中是很麻烦的.有几种选择,我会讨论他们的画布,或者我敢说他们的阿喀琉斯之踵.

  1. 拆分Windows我可以将vim分成5个窗口,每个项目一个,但我不妨通过针孔编码.我实际上从来不是分裂窗口的粉丝,除了你经常比较和编辑两个相关文件的情况.此外,我发现两个维度的导航无法像水平方向那样无缝导航.

  2. 选项选项卡,或者更确切地说是视图,愚蠢地称为选项卡,似乎完全适用于此类问题,但它们不提供对缓冲区的限制.例如,如果我在我的Thesis标签中,我只想导航那20个缓冲区,而不是所有500个网站相关的缓冲区.当我将这些保存为会话时,如果我不小心切换到website我的Thesis选项卡中的缓冲区,退出,然后在进入时我可能会导致问题,我有两个website选项卡.这还有问题,因为我:lcd为每个选项卡设置了本地目录().

  3. 终端选项卡使用终端选项卡可确保每个选项卡中的缓冲区保持独立.但是,每个vim会话都不能再共享信息.我不能把文字从一个终端拉到另一个终端(我想我可以进入+寄存器).我也不能再使用:buffdo所有的缓冲区了.此外,我喜欢这样一个事实,即我可以将所有vim选项卡保存到单个会话中.

我知道,这样的诅咒公众讨论,所以我会代替问是否有存在的方式来实现我追求的功能.

编辑总结我需要的一个好方法是说我想要"子缓冲区".

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

基本上就是我要的是能力,通过标签,运行VIM的多个独立的会话,但仍然有一些附加津贴(即共享寄存器能够抽出)

puk*_*puk 6

我找到了一种方法来做到这一点.vim标签几乎没用.相反,我使用了Gnome终端标签.

  1. 全局寄存器为了模拟使用全局寄存器,以便能够在vim的不同实例之间复制粘贴,通过将行添加set clipboard=unnamedplus到.vimrc文件中来"管道"系统剪贴板和未命名的寄存器.这具有将所有yank/delete ...操作复制到系统剪贴板的效果.从那里,vim的其他实例将可以访问它.同样,任何粘贴你在vim之外做的副本现在都将存储在未命名的寄存器中.

  2. Gnome终端选项卡快捷方式转到下一个和上一个选项的默认快捷方式是Ctrl Pg UpCtrl Pg Dn.因为我使用 Shift kShift j我的下一个和以前的缓冲区,我映射Ctrl kCtrl j转到我的下一个和上一个选项卡.只需转到Gnome终端>编辑>键盘快捷键即可

  3. Gnome终端选项卡编写shell脚本以将每个vim实例作为新的终端选项卡启动.请参阅此处获取说明

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

它并不完美(例如,命名寄存器不能跨终端复制)但在我看来,它更能代表视口(这里称为'tabs')应该做什么.


编辑我实际上已经回到使用vim标签.我学习了vim脚本,并映射了我的键,ShiftJ然后ShiftK映射到上一个/下一个缓冲区,CtrlJCtrlK映射到上一个/下一个选项卡.然后我下载了tabname脚本,这样我就可以设置有意义的选项卡名称,然后修改vim会话的制作以保存选项卡名称(见这里),然后从gVim切换回Vim,这样我就可以使用全屏模式了.这是一段漫长艰苦的旅程,但我认为这是值得的.