我经常同时处理多个项目。我手头的文件数量如下:
Project | Files
--------------------------
Thesis 20
Simulator 50
Plots 30
Graphs 30
Website 500+
在一个窗口中放置所有这些文件显得很笨重。有几种选择,我将讨论它们的缺点,或者说是它们的致命弱点。
1. 分割窗口 我可以将vim分成5个窗口,每个项目一个,但这与通过针孔编码没有什么区别。实际上,我从来都不喜欢分割窗口,除了在不断比较和编辑两个相关文件的情况下。此外,我发现在二维中导航不如仅沿水平方向那样无缝。
2. 标签页 标签页(愚蠢地称为视口)似乎正好解决了这种问题,但它们不提供缓冲区使用的限制。例如,如果我在我的“毕业论文”标签页中,我只想浏览这20个缓冲区,而不是所有500多个网站相关缓冲区。由于我正在将它们保存为会话,如果我意外切换到“毕业论文”标签页中的“网站”缓冲区,然后退出,在进入时我就会有两个“网站”选项卡。这更加麻烦,因为我已经为每个标签设置了本地目录(:lcd)。
3. 终端标签页 使用终端标签页确保每个标签页中的缓冲区保持独立。然而,每个vim会话不能再共享信息。我无法将文本从一个终端复制到另一个终端(我想我可以将其复制到“+”寄存器中)。我也不能对所有缓冲区使用:buffdo。此外,我喜欢可以将所有vim标签保存为单个会话的事实。
我知道SO是公开讨论的大忌,因此我将询问是否有一种方法来实现我所追求的功能。
编辑:一个很好的概括我需要的方式是说我想要“子缓冲区”。
编辑:我想要从vim标签中获得的是更有效地使用它们作为它们真正是的视口的能力。我想要能够仅为我的毕业论文部分创建一个选项卡。在这个部分中,我会更改本地目录以反映它。此外,我希望将该选项卡中的缓冲区过滤为所有缓冲区的子集。同样,在模拟器选项卡中,我想要专门用于我的模拟器文件。
基本上,我想通过标签页运行多个独立的vim会话的能力,但仍然具有一些额外的优点(即共享寄存器以能够复制)。
cd
命令?为什么不给你的*.py
脚本取别名或者将它们的目录添加到你的$PATH
中?或者直接在一个Vim窗口中完成所有操作,然后将你的脚本映射到<F7>
键上或其他快捷键上? - romainl