是否可以使用单独的缓冲区在VIM中创建2个选项卡?

是否可以使用单独的缓冲区在VIM中创建2个选项卡?,vim,tabs,buffer,Vim,Tabs,Buffer,我主要在网站上工作,有时我需要为后端显示3或4个缓冲区,同时为前端显示3或4个缓冲区。这里有选项卡,但缓冲区是混合的。我知道我有点挑剔,但有没有办法从标签中创建缓冲区“集合”?它可以通过制表符限制打开的缓冲区的数量,并且更容易从一个缓冲区切换到另一个缓冲区。是的,您可以有窗口本地参数列表: $ vim :arglocal foo bar baz :tabnew :arglocal arthur robert charles 现在,第一个选项卡页面中的:args应输出: [foo] bar ba

我主要在网站上工作,有时我需要为后端显示3或4个缓冲区,同时为前端显示3或4个缓冲区。这里有选项卡,但缓冲区是混合的。我知道我有点挑剔,但有没有办法从标签中创建缓冲区“集合”?它可以通过制表符限制打开的缓冲区的数量,并且更容易从一个缓冲区切换到另一个缓冲区。

是的,您可以有窗口本地参数列表:

$ vim
:arglocal foo bar baz
:tabnew
:arglocal arthur robert charles
现在,第一个选项卡页面中的
:args
应输出:

[foo] bar baz
在第二个选项卡页面中:

[arthur] robert charles
这种方法的一个潜在问题是,您在某种程度上受限于参数特定的命令:

:n[ext]
:prev[ious]  (or :N[ext])
:fir[st]     (or :rew[ind])
:la[st]
:argl[ocal]
:tabn[ext]                         (or gt)
:tabp[revious]  (or :tabN[ext])    (or gT)
:tabfir[st]     (or :tabr[ewind])
:tabl[ast]
和特定于选项卡的命令:

:n[ext]
:prev[ious]  (or :N[ext])
:fir[st]     (or :rew[ind])
:la[st]
:argl[ocal]
:tabn[ext]                         (or gt)
:tabp[revious]  (or :tabN[ext])    (or gT)
:tabfir[st]     (or :tabr[ewind])
:tabl[ast]
如果只使用全局参数列表(
:b
,即
:bn/:bp
的循环性质),则这些命令不如更通用的命令灵活


也就是说,您仍然可以在vim.org上查找插件。

我大量使用选项卡来处理不同的目录(有时4个以上的选项卡)

结合像
CtrlP
这样的插件和
:lcd
命令,您可以有效地拥有多个工作区(每个工作区都有不同的目录),并且只需最少的心理维护

:lcd
命令仅更改当前窗口的目录,因此我使用它的方式如下

  • 打开一个新选项卡:tabnew
  • :lcd~/where/else
  • ctrl+p
    (默认绑定为
    CtrlP
    以打开当前目录中的文件)并找到要编辑的文件
  • 使用
    :tn
    :tp
    在选项卡之间切换(显然,由于我进行了大量切换,所以我为这些选项卡设置了键绑定)

  • 因此,基本上每个选项卡都有自己的工作目录,您可以使用
    ctrl+p
    在文件/缓冲区之间切换。

    就我个人而言,我觉得缓冲区+拆分(使用一些插件,例如ctrlp或fusyfinder)比选项卡更舒适。。。我很少在选项卡中打开文件。也许我没有学会tab的力量……可能重复:(以及右边“相关”栏中的其他几个问题)我同意Kent不使用tab。这里有一些关于如何使用的提示(注意这是关于关闭标签,但主题是相关的)我同意你的观点,我的问题不是很清楚。我使用缓冲区和拆分窗口,但我喜欢使用选项卡来区分缓冲区,一个选项卡用于前端拆分缓冲区,另一个选项卡用于后端拆分窗口。就像这样,我不会混淆文件。你有没有想过在不同的tmux窗口中使用不同的vim实例?是的,这和我的用途相同,但是缓冲区在选项卡之间共享,如果可能的话,这就是我想要避免的。我可以问一下,为什么共享缓冲区会让你担心?如果您仅使用
    ctrlP
    打开文件,那么您应该只能访问该“工作区”中的文件,对吗?您是否广泛使用
    bufdo
    ?(抱歉,我没有完全回答您最初的问题)我使用vim和nerdtree打开文件,使用LycosExplorer在缓冲区中导航,在相同的项目中,我可以打开许多缓冲区。当我搜索一个特定的缓冲区时,用选项卡拆分这个缓冲区列表会更舒服:我打开一个用于js文件的选项卡,一个用于php文件的选项卡,但是当我在js选项卡中搜索一个打开的缓冲区时,我看到了所有的php缓冲区,但我不想看到它们。我曾尝试使用:arglocal myfile.ext在选项卡中打开缓冲区,但缓冲区仍在选项卡之间共享。本地参数列表将传递给新窗口。使用
    :tabnew
    创建一个新选项卡,然后使用
    :arglocal
    填充新默认窗口的参数列表是一种方法。