假设我已经像这样启动了 vim:
vim foo bar
Run Code Online (Sandbox Code Playgroud)
现在我决定将这些文件中的每一个都放在自己的选项卡中。有没有办法在不退出 vim 并将-p
选项添加到我的命令行的情况下做到这一点?
Dav*_*llo 34
当您像这样启动 vim 时,您没有获得 vim 客户端,文本编辑器正在使用终端或 cmd 提示符 - 这两个文件位于两个不同的缓冲区中。使用:ls
列出缓冲区:
:ls
1 %a "foo" line 6
2 "bar" line 0
Run Code Online (Sandbox Code Playgroud)
%a 是活动缓冲区。您可以使用:b2
切换到缓冲区 2 或使用:bn
循环到下一个或:bp
前一个。我更喜欢 (CTRL-W v) 垂直拆分窗口,而不是 (CTRL-W s) 水平拆分。
如果您加载了 2 个文件并且没有选项卡(还),则可以,:tabnew
并且在新选项卡类型中:b2
如果您希望始终将缓冲区加载到它们自己的选项卡中,请查看这篇文章。
rkj*_*nsn 34
您可以通过将tab
命令与sb[uffer]
命令组合来完成此操作。
首先,您需要知道要在新选项卡中打开的缓冲区的缓冲区 ID。您可以使用以下ls
命令找到它:
:ls
1 %a "foo" line 1
2 "bar" line 0
Run Code Online (Sandbox Code Playgroud)
获得 ID 后,您可以使用以下命令在新选项卡中轻松打开它:
:tab sb 2
Run Code Online (Sandbox Code Playgroud)
该sb
命令通常在新的拆分窗口中打开给定的缓冲区,但该tab
命令会导致它在新选项卡中打开。
该tab
命令还允许您指定应在选项卡列表中创建新选项卡的位置。例如,:0tab sb 2
将导致新的“栏”选项卡出现在列表的开头而不是当前选项卡之后。
Joh*_*ley 26
完成 OP 要求的更好方法是:
:bufdo tab split
这会将每个缓冲区打开到它自己的一个选项卡中,无论有多少。如果你使用这么多,很容易在你的 .vimrc 中制作一个映射。结合类似这个小 vim 插件的东西,以下内容将在它自己的选项卡中打开:grep
(或:Ack)中的每个项目:
:grep foo
:QuickFixOpenAll
:bufdo tab split
Run Code Online (Sandbox Code Playgroud)
当然,当使用插件时,修改它以将快速修复列表内容直接打开到选项卡中是很容易的。
更新:我真的必须对下面 ggustafsson 的评论大喊大叫。它无疑是最好的答案,并且精美地说明了 Vim 对组合行为的倾向。建议是:
:tab sball
Run Code Online (Sandbox Code Playgroud)
非常值得查找:tab和:sball的 Vim 帮助,看看这里发生了什么。
1.在 Vim 中打开两个文件。
$ vim foo 栏
2.检查缓冲区的数量。
:ls 1%a "foo" 2个“酒吧”
3.链接两个命令:tabnew
打开一个新选项卡和b <buffer_number>
在选项卡中加载所需的缓冲区。
:tabnew | 乙 2
归档时间: |
|
查看次数: |
26637 次 |
最近记录: |