题
我已经看过能力使用标签的Vim(与 :tabe
, :tabnew
, 等)。 作为一个替代我的当前做法有许多打开文件,在同一窗口在隐藏的缓冲区。
我想每个不同的文件,我已经开始终是在其自己的标签。然而,有一些事情的方式得到这一点。如何解决这些:
当命令等
gf
和^]
跳到一个位在另一个文件,该文件将打开一个新的缓冲器,在目前的标签。有没有一种方法,所有这些各种各样的命令打开文件,在一个新的标签,或关于现有标签的文件,如果这已经是开的?切换时的缓冲器,我可以使用
:b <part of filename><tab>
它将完成的文件的名称在现有的缓冲区。<part of filename>
甚至可以中的一个文件,而不是开始。是否有一个相当于用于开关的标签?
解决方案
停,停,停。
这不是如何Vim的标签的设计来使用。事实上,他们是名不副实的.一个更好的名称将是"视窗"或"布局",因为这是一个选项是—它是一个不同的布局的窗户 所有 现有的缓冲区。
试图击败Vim入1tab==1缓冲区是徒劳之举。Vim不知道或不关心,也不会对它的所有命令,特别是,任何使用quickfix缓冲区(:make
, :grep
, , :helpgrep
是那个春天的到心)将高兴地忽略的标签有什么可以做到停止。
取而代之的是:
:set hidden
如果你没有这种设置,那么这样做。它使vim工作就像其他每一个多文件的编辑在这个星球上。你可以编辑的缓冲器,不可见的一个窗口的地方。- 使用
:bn
,:bp
,:b #
,:b name
, ,ctrl-6
关之间的缓冲区。我喜欢ctrl-6
我自己的(单独的关于以前使用的缓冲器,或者#ctrl-6
开到缓冲区号#
). - 使用
:ls
列出的缓冲区,或者像一个插件 MiniBufExpl 或 BufExplorer.
其他提示
这里的派对迟到了,但很惊讶我在这个列表中没有看到以下内容:
:tab sball
- 这会为每个打开的缓冲区打开一个新选项卡。
:help switchbuf
- 这会控制缓冲区切换行为,请尝试:set switchbuf=usetab,newtab
。这应该意味着如果缓冲区打开则切换到现有选项卡,或者如果没有则创建一个新选项卡。
Vim :help window
解释了混淆<!> quot; tabs vs buffers <!> quot;很好。
缓冲区是文件的内存中文本。
窗口是视口 在缓冲区。
标签页是一组窗口。
使用缓冲区在vim中打开多个文件。在其他编辑器(例如notepad ++)中,这是使用制表符完成的,因此vim中的名称选项卡可能会产生误导。
Windows 用于拆分工作区并在一个屏幕上一起显示多个文件(缓冲区)。在其他编辑器中,这可以通过打开多个GUI窗口并在桌面上重新排列它们来实现。
最后在这个比喻中,vim的标签页将对应多个桌面,即窗口的不同重新排列。
当vim help: tab-page
解释时,可以使用标签页,当想要临时编辑文件但不想更改当前窗口和缓冲区布局中的任何内容时。在这种情况下,可以使用另一个标签页,仅用于编辑该特定文件。
当然,您必须记住,在许多标签页或窗口中显示相同的文件会导致显示相同的工作副本(缓冲区)。
与此处的其他一些答案相反,我说您可以根据需要使用制表符。 vim被设计为多功能和可定制的,而不是强迫您根据预定义的参数工作。我们都知道程序员如何强加我们的<!>“道德<!>”;在其他人身上,所以这个成就当然是一个主要特征。
<C-w>gf
是缓冲区'gf
命令的等效选项卡。 <C-PageUp>
和<C-PageDown>
将在标签之间切换。 (在Byobu中,这两个命令对我来说不起作用,但它们在Byobu / tmux之外工作。替代方案是gt
和gT
。)<C-w>T
将当前窗口移动到新的标签页。
如果您希望vim尽可能使用现有标签,而不是创建重复标签,请将:set switchbuf=usetab
添加到.vimrc文件中。您可以将newtab
添加到列表(:set switchbuf=usetab,newtab
)以强制显示编译错误的QuickFix命令在单独的选项卡中打开。我更喜欢split
,它会在拆分窗口中打开编译错误。
如果您使用:set mouse=a
启用了鼠标支持,则可以通过单击它们与选项卡进行交互。默认情况下还有一个+
按钮,可以创建一个新选项卡。
有关选项卡的文档,请在正常模式下键入:help tab-page
。 (执行此操作后,您可以使用:help windows
练习将窗口移动到选项卡。)有很多命令。一些窗口命令与选项卡有关,因此您可能希望通过vim -p file1 file2 ...
查看该文档。
增加:2013-12-19
要在vim中打开多个文件,并在单独的选项卡中使用每个文件,请使用-p
。如果你像我一样并且总是忘记添加vim
,你可以在最后添加它,因为vim遵循正常的命令行选项解析规则。或者,您可以添加bash别名映射vim -p
到<=>。
我遇到了同样的问题。我希望标签像缓冲区一样工作,我从来没有设法让它们到达。我最终解决的解决方案是使缓冲区表现得像制表符!
一旦安装,请查看名为 Mini Buffer Explorer 的插件配置完成后,您将能够以与标签相同的方式使用缓冲区,而不会丢失任何功能。
对于那些不熟悉Vim并来自其他文本编辑器(在我的案例中为Sublime Text)的人来说,这是一个答案。
我仔细阅读了所有这些答案,但仍然不清楚。如果你仔细阅读它们,那么事情开始变得有意义了,但是我花了好几个小时在问题之间来回走动。
首先,正如其他人所解释的那样:
标签页,听起来很像标签,它们就像标签一样,在大多数其他GUI编辑器中看起来很像标签,但它们不是。我认为这是一个基于Vim构建的糟糕的心理模型,不幸的是,它会在标签页中覆盖你的额外力量。
我理解的第一个描述来自 @ crenate的答案,它们相当于多个桌面。在这方面看到你只打开了几个桌面,但每个桌面都有很多GUI窗口。
我想说它们与其他编辑器/浏览器类似:
- 标签分组
- Sublime Text工作区(即项目中打开的文件列表) 醇>
当你看到它们时你意识到它们的力量,你可以轻松地将文件组(缓冲区)组合在一起,例如您的CSS文件,HTML文件和JS文件在不同的标签页中。这实际上非常棒。
我觉得令人困惑的其他描述
视口
这对我没有意义。虽然它确实有定义的字典术语,但我只听说过Vim窗口在:help window
doc。对于像Sublime Text,Visual Studio,Atom,Notepad ++这样的编辑器,Viewport并不是我所听过的术语。事实上,在我开始尝试使用标签页之前,我从未听说过Vim。
如果您查看多个桌面等标签页,那么将桌面称为单个窗口似乎很奇怪。
工作区
这可能更有意义,字典定义是:
临时使用的记忆储存设施。
所以它就像是存放一组缓冲区的地方。
我最初听起来并不像工作区的 Sublime Text的概念是您在项目中打开的所有文件的列表:
sublime-workspace文件,其中包含用户特定的数据,例如打开的文件和对每个数据的修改。
然而,考虑更多,这确实同意。如果您将Vim标签页视为Sublime Text项目,那么在每个项目中只打开一个文件并在项目之间切换似乎很奇怪。因此,为什么使用标签页只打开一个文件是奇怪的。
Windows的集合
<=>以这种方式引用标签页。还有许多其他答案使用相同的概念。然而,直到你了解vim窗口是什么,那就没什么用了,就像在沙滩上建造城堡一样。
正如我上面提到的,vim窗口与视口相同,并且在这个 linux.com文章:
Vim中一个非常有用的功能是能够在一个或多个文件之间拆分可视区域,或者只是拆分窗口以更容易地查看同一文件的两个位。 Vim文档可以互换地将其称为视口或窗口。
如果您曾使用过:帮助主题或按F1键使用过Vim的帮助功能,则您可能已经熟悉此功能。瓦在输入帮助时,Vim会拆分视口并在顶部视口中打开帮助文档,使文档在底部视口中保持打开状态。
我觉得奇怪的是,标签页被称为窗口的集合而不是缓冲区的集合。但我想你可以打开两个单独的标签页,每个标签页都有多个窗口都指向同一个缓冲区,至少这是我目前所理解的。
看着 :帮助标签 它看起来不像vim想要像你那样工作......
缓冲区在选项卡之间共享,因此似乎无法锁定给定缓冲区以仅显示在某个选项卡上。
但这是一个好主意。
您可以通过使用支持标签的终端(如multi-gnome-terminal,然后在每个终端标签中运行vim实例)来获得所需的效果。虽然不完美......
你可以地图的命令,通常操纵缓冲区操纵的标签,正如我已经做了gf在我的。vimrc:
map gf :tabe <cfile><CR>
我敢肯定你可以做同样[^
我不认为vim支持这一标签(yet).我用gt和gT移动到一个新的和以前的标签,分别。你也可以使用版,其中N为的标签号。一个忿怒我是默认情况下,该卡的数量没有显示在签线。为了解决这个问题,我把几个职能在结束 我的。vimrc文件 (我没有粘贴在这里,因为它的长并没有格式正确).
我使用 BufExplorer 插件和标签等缓冲区一些宏:
" CTRL+b opens the buffer list
map <C-b> <esc>:BufExplorer<cr>
" gz in command mode closes the current buffer
map gz :bdelete<cr>
" g[bB] in command mode switch to the next/prev. buffer
map gb :bnext<cr>
map gB :bprev<cr>
使用BufExplorer,顶部没有标签栏,但另一方面它可以节省屏幕空间,而且可以打开无限数量的文件/缓冲区,缓冲区列表可搜索...
如果您希望缓冲区像标签一样工作,请查看 tabline插件
使用单个窗口,并在顶部添加一行来模拟选项卡(仅显示缓冲区列表)。很久以前,只有在GVim中支持制表符而在命令行vim中才支持制表符。因为它只使用缓冲区,所以一切都与vim的其余部分很好地集成。