Answers:
这样启动vim时,您没有vim客户端,文本编辑器使用的是terminal或cmd提示符-这两个文件位于两个不同的缓冲区中。使用:ls
列出缓冲区:
:ls
1 %a "foo" line 6
2 "bar" line 0
%a是活动缓冲区。您可以:b2
用来切换到缓冲区2,也:bn
可以循环到下一个或:bp
上一个。我更喜欢(CTRL-W v)垂直拆分窗口,而不是(CTRL-W s)水平拆分窗口。
如果您已加载2个文件且还没有标签,则可以,:tabnew
并在新标签类型中:b2
如果您希望始终将缓冲区加载到自己的标签中,请参阅本文。
vim
将在外壳中启动编辑器。要获得vim图形用户界面,我必须使用gvim
。您是正确的-缓冲区对于vim应用程序是全局的。
您要在新标签页中打开缓冲区吗?
拆分屏幕(Ctrl-W),占据一个窗口,然后按Ctrl-W T
Ctrl-w T
呢。当然,第一个选项卡仍将以这种方式具有两个缓冲区。
:ls
。
您可以通过将tab
命令与sb[uffer]
命令结合在一起来完成此操作。
首先,您需要在新选项卡中知道要打开的缓冲区的缓冲区ID。您可以使用以下ls
命令找出答案:
:ls
1 %a "foo" line 1
2 "bar" line 0
获得ID后,您可以使用以下方法在新标签中轻松打开它:
:tab sb 2
该sb
命令通常会在新的拆分窗口中打开给定的缓冲区,但是该tab
命令会使其在新选项卡中打开。
该tab
命令还允许您指定应在选项卡列表中的何处创建新选项卡。例如,:0tab sb 2
将导致新的“栏”标签出现在列表的开头,而不是当前标签的后面。
:tab buffer part-of-name
没有打开新标签时,我感到非常沮丧!但是:tab sb part-of-name
像魅力一样运作。谢谢!!!!
完成OP要求的更好的方法是:
:bufdo tab split
无论有多少缓冲区,这都会将每个缓冲区打开到自己的选项卡中。如果使用过多,很容易在.vimrc中建立映射。与类似这个小vim插件的东西结合在一起,以下代码将在其自己的选项卡中打开:grep
(或:Ack)中的每个项目:
:grep foo
:QuickFixOpenAll
:bufdo tab split
当然,使用插件时,对其进行修改就足够容易了,可以直接在选项卡中打开快速修复列表内容。
更新:我真的必须对下面古斯塔夫松的评论大声疾呼。这无疑是最好的答案,并且很好地说明了Vim倾向于构图行为的趋势。建议是:
:tab sball
:bufdo execute "tabnew %"
。我认为新方法更加清晰。
:tab sball
似乎效果更好。
1.在Vim中打开两个文件。
$ vim foo酒吧
2.检查缓冲区的数量。
:ls 1%a“ foo” 2“栏”
3.链接两个命令:tabnew
打开一个新选项卡,并b <buffer_number>
在选项卡中加载所需的缓冲区。
:tabnew | b 2
:tab sb 2
只是添加一些其他人没有提到的观点。
如果有多个窗口,<C-W>T
则将该窗口移到新选项卡。但是,此快捷方式仅适用于“窗口”,不适用于“缓冲区”。如果更喜欢这种样式,:sp
或者<C-W>s
将当前缓冲区复制到另一个窗口,则将<C-W>T
其移至新选项卡。
4次击键或7次击键。
:tabe %
打开当前缓冲区的新标签。
7次击键。
如果使用CtrlP插件,也可以使用“ CtrlPBuffer”,然后用<C-t>
快捷方式在新标签页中打开它。这种样式,很容易切换到不同的缓冲区。
使用快捷键“ CtrlPBuffer”,至少需要击键4次。
:tabe %
是我很久以来一直在寻找的东西,谢谢!
:tabe %
实际上不会为当前缓冲区打开新选项卡。发生的事情是%
将其扩展到当前缓冲区的文件:tabe
路径并打开该路径。Vim会看到您正在尝试打开一个已经打开的文件,并将重用您拥有的缓冲区。这意味着这不适用于没有文件路径的缓冲区。如果您使用打开了一个新文件,:new
但尚未保存,则无法使用此文件将其放在新选项卡上。您真正需要的命令是rkjnsn回答的内容::tab sb %
或更短的内容::tab sb
tabe %
提到的 内容。