vim>&燃气轮机;旋转目标分割中打开的所有缓冲区

vim>&燃气轮机;旋转目标分割中打开的所有缓冲区,vim,split,rotation,buffer,hidden,Vim,Split,Rotation,Buffer,Hidden,我习惯于IDE样式的选项卡面板,在尝试使用缓冲区和拆分复制此功能时,我使用vim遇到了一些arggghh诱导的场景 我有以下相关的.vimrc设置: set hidden set switchbuf=useopen,usetab 现在,假设我打开4个缓冲区,先垂直拆分,然后水平拆分,这样1个缓冲区显示在左侧,2个缓冲区显示在右侧。第四个缓冲区被隐藏(在左侧分割处打开) 光标位于左分割时,使用:bnext和:bprevious在左分割中的所有缓冲区中旋转;这是不可取的,因为我真的不需要在两个不同

我习惯于IDE样式的选项卡面板,在尝试使用缓冲区和拆分复制此功能时,我使用vim遇到了一些arggghh诱导的场景

我有以下相关的.vimrc设置:

set hidden
set switchbuf=useopen,usetab
现在,假设我打开4个缓冲区,先垂直拆分,然后水平拆分,这样1个缓冲区显示在左侧,2个缓冲区显示在右侧。第四个缓冲区被隐藏(在左侧分割处打开)

光标位于左分割时,使用:bnext和:bprevious在左分割中的所有缓冲区中旋转;这是不可取的,因为我真的不需要在两个不同的分区中看到相同的文件内容(有没有办法选择vim克隆缓冲区影响?)。使用:sbnext和:sbprevious对可见缓冲区非常有效,但一旦遇到隐藏缓冲区,它就会以新的拆分方式打开,从而对我的布局造成严重破坏。使用10+缓冲区时,问题会变得更严重

理想情况下,我希望在给定的分割(即缓冲区打开的位置)内旋转所有可见和隐藏的缓冲区

欢迎提出建议

p、 我现在正在尝试VimCtrl空间插件,非常好,但并没有解决上述问题


谢谢

当您可以通过
:buffer
命令直接转到所需的缓冲区时,为什么要旋转缓冲区

:b foo
:b
获取缓冲区编号或部分文件名(也包含globs!)。我建议使用部分文件名方法。您还可以使用制表符完成来区分不明确的部分文件名

您可以使用相同的方法使用
:sbuffer
:sb
),但可以打开拆分

有关更多帮助,请参阅:

:h :b
:h :sb

基本导航单元是缓冲区。Windows和tab页是建立在缓冲区之上的抽象,这些缓冲区引入了它们自己的好特性和坏特性,并且在大多数情况下,不能很好地使用传统的缓冲区

您遇到了问题,因为您试图将缓冲区命令应用于以窗口为中心的工作流

一旦将工作区拆分为多个窗口,您就必须使用窗口命令进行导航,而一旦使用选项卡页面,选项卡导航就成为您的标准。正如您所注意到的,不仅很难(不可能,AFAIK)使缓冲区导航窗口/选项卡感知,而且替代技术实际上在功能方面也有相当大的不足

第四个缓冲区被隐藏(在左侧分割处打开)

这是您的第一个问题:第四个缓冲区是隐藏的,因此是暂时的。它不会在任何窗口中打开,并且可以在任何窗口中显示。您可以选择在特定窗口中显示特定缓冲区,但不能将其真正“固定”到该窗口

光标位于左分割时,使用:bnext和:bprevious在左分割中的所有缓冲区中旋转;这是不可取的,因为我真的不需要在两个不同的分区中看到相同的文件内容(有没有办法选择vim克隆缓冲区影响?)

同样,您使用的缓冲区命令根本不关心窗口和选项卡页

使用:sbnext和:sbprevious对可见缓冲区非常有效,但一旦遇到隐藏缓冲区,它就会以新的拆分方式打开,从而对我的布局造成严重破坏

同样,这项工作的工具是错误的

尽管可以保留尽可能多的窗口本地参数列表,并将这些列表与
:next
:previous
一起使用,但这需要相当多的关注和前瞻性。也许有一个插件?无论如何:

  • 创建布局:

    :vs|sp
    
  • 返回左侧的大窗口:

    <C-w>w
    
  • 移动到下一个窗口,编辑本地参数列表并重复:

    <C-w>w
    :arglocal ccc.txt ddd.txt
    <C-w>w
    :arglocal eee.txt fff.txt
    
    w
    :arglocal ccc.txt ddd.txt
    W
    :arglocal eee.txt fff.txt
    
  • 您现在可以执行
    :next
    :previous
    切换参数或
    切换到备用文件

  • 请注意,虽然您能够以某种方式将缓冲区“强制”到特定的窗口,但您现在的导航能力受到严重限制,您现在必须处理多维结构,该结构相当脆弱,需要太多的脑细胞


    <>你应该考虑使用VIM,尽量不要使用直接缓冲区。

    我正在使用,而且它对我的工作流非常有效。我习惯于在同一个窗口中打开许多缓冲区。有了这个插件,我可以轻松地管理所有这些。我也在使用,这两个插件一起工作非常好。好了,就这样。我希望这有帮助

    当然,这是可行的。使用IDE中的20个选项卡,所有选项卡都是可见的,因此无需切换到灰色上下文即可查询需要编辑的文件的名称,您只需知道其在面板X的选项卡栏中的位置,或通过热键旋转打开的文件(打开文件的位置)。必须是vim的方式,处理文件名,更喜欢通过缓冲区直观地旋转,缓冲区的内容表示文件的内容(不是它的名称)。我明白你的意思,但我使用许多打开的缓冲区(有时超过100个)。使用标签根本不适合我。相反,我使用了
    :b
    、ctags/cscope、大写字母标记、
    :vimgrep
    /
    :grep
    /
    :Ggrep
    /
    :Ack'
    。我还敢打赌,通过20个标签旋转是相当不方便的。由于您是根据文件的内容查找文件,我建议将ctags/cscope和
    :vimgrep
    作为良好的起点。然而,如果你被束缚并决定在缓冲区中旋转,那么我建议你将
    :bn
    :bp
    映射到我已经映射过的一些方便的东西:bn,:bp,缺少的是可预测性。不幸的是,拆分带来了IDE样式选项卡式布局的错觉,同时提供了完全不同的东西。编辑是维姆的最爱
    <C-w>w
    :arglocal ccc.txt ddd.txt
    <C-w>w
    :arglocal eee.txt fff.txt