正如ZyX在#vim上所说的那样,这个问题听起来像“为什么Vim专家偏爱美味而不是温暖?” 。
“ Vim专家”不喜欢使用缓冲区而不是选项卡:他们使用缓冲区作为文件代理,使用标签页作为工作区。缓冲区和选项卡页具有不同的用途,因此优先选择缓冲区和选项卡毫无意义。
缓冲区和制表符的问题是混乱的原因之一,这是由多个独立事实共同引起的。
大多数“现代”文本编辑器和IDE都使用制表符来表示加载的文件。这个比喻充当了一个信息系统–它向用户显示了哪些文件已打开以及它们的状态–以及作为一个交互设备–它允许用户操纵(重新排序,选择,关闭……)那些打开的文件。尽管有很多限制,制表符无处不在,人们已经习惯了制表符,并期望无处不在。
Vim 在7.0中引入了选项卡页面,以供用户创建临时的“工作区”。它们的功能,其特定的选项,其特定的命令或它们的:help
节中没有任何内容表明选项卡页可以或应该用作文件代理。
除了名字 当然, “标签页”和外观会引起很多混乱。
不带 :set hidden
,默认情况下它是禁用的,而且很难找到,Vim使得无法在不写入当前缓冲区或放弃其更改的情况下切换到另一个缓冲区。不知道该选项的新用户别无选择,只能转向使用繁琐的Windows或他们可以找到的最接近的“类似于标签的”功能:标签页。
“标签页”是该功能的不幸名称选择,尤其是在以阅读文档为浪费时间这一思想为主导的时代。
在Vim中,选项卡页是建立在Windows之上的抽象,本身就是建立在缓冲区之上的抽象。每个新级别都会添加有用的功能,但会限制您的工作流程。
“缓冲方式”
使用基于缓冲区的工作流程,您正在使用的文件沿一个维度分布。您可以循环浏览缓冲区,可以通过键入其名称的一部分(带有补全)或编号来访问特定缓冲区,可以在缓冲区之间交替,可以轻松地定位它们。基本上没有摩擦。
打开了八个缓冲区,只有一个可见:
按数字切换:
按名称切换:
缓冲区是Vim的文件代理。如果考虑文件,就考虑缓冲区。
“窗口方式”
使用基于窗口的工作流,您的“文件”都沿着相同的单个“虚拟”维度分布,就像您仅使用缓冲区时一样,也沿着其他两个“物理”维度分布。但是找到这些尺寸的笛卡尔空间几乎完全分开:移动到另一个缓冲区仍然意味着“移动到另一个文件”,但是移动到另一个窗口则没有。对应于所需文件的缓冲区可以显示在该窗口中,但也可以显示在另一个窗口中,也许在另一个选项卡页面中,或者根本不显示。
使用Windows,即使使用'switchbuf'
和,在打开的文件之间导航也变得过于复杂或过于简单:sb
。主要是因为您被迫使用两组命令进行本质上相同的操作:访问缓冲区。
Windows有其用途,如下所述,但它们没有替换任何人的工作流程中的缓冲区所需的资源。
在这里,我正在研究Vim的色彩设计。这两个窗口是同一个缓冲区的不同视图:顶部是参考,上面是一张用于colorscheme的颜色代码表,底部是我工作的地方:
Windows并非设计为文件代理,也不能制成文件代理:它们是“容器”或“视口”,旨在为您提供缓冲区视图。不多不少。
“制表方式”
使用基于选项卡的工作流程时,您实际上试图模仿以前的编辑器所习惯的用户体验,同时完全忽略了Vim选项卡页面的本质。如果我们暂时忘记这种策略通常是没有效果的,那么就像Windows一样,也不可能迫使Vim遵循“一个文件=一个选项卡”的范例而又不损失很多灵活性。
仍然使用与上述相同的文件,制表位占用了大量空间,几乎没有任何好处。我的所有文件和所有选项卡都被调用,javascript*.vim
因此我无法做,3gt
并且确信我会在正确的位置结束,并且无法通过名称访问特定的选项卡。此外,它的标签很可能是非常无用的,但却是完全合乎逻辑的事实[Quickfix List]
……由于没有将文件/缓冲区绑定到标签页的实用方法,因此基本上只剩下一种在标签页之间导航的实用方法/ buffers / files:循环。
是的,我的选项卡只剩下8个选项卡,想想如果我有20个!
在八个标签页中打开八个缓冲区(错误)
用于两个特定任务的两个选项卡(右)
标签页是设计为包含一个或多个窗口的“容器”或“视口”,它们本身也是设计为包含缓冲区的“容器”。
结论
“ Vim专家”(假设我可以像我一样说话)不喜欢使用缓冲区而不是制表符:他们只是使用Vim,因为它是设计而成的,并且对这种设计非常满意:
“ Vim专家”加载了2、30或97个缓冲区,很高兴他们不必处理空间分布;
当他们需要比较两个文件或在当前缓冲区的一个部分中工作而又以另一个为参考时,“ Vim专家”会使用Windows,因为这就是使用它们的方式;
当他们需要在项目的另一部分上工作一段时间而不弄乱当前视图时,“ Vim专家”将加载一个全新的标签页。