如何将现有窗口移至新选项卡?


151

有没有办法将现有窗口(拆分)放入新标签页?


如果您再次遇到此问题,请更改接受的答案,DrAI的答案比Mykola的答案正确得多。
gbr

Answers:


261

除了先前建议:tabedit的做法,这样做是一个更快的方式(在正常模式下),以打击Ctrl- - 。W Shift TCtrl-W是各种窗口操作命令的通用前缀。

看到:

:help Ctrl-W_T
:help Ctrl-W

3
请注意,help Ctrl-W_T它将带您到Ctrl-W_t(小写)帮助条目,但是,页面下方是该Ctrl-W_T条目(大写字母T),说“将当前窗口移至新选项卡页面...。”
Rabarberski

1
@DrAl,以及我们如何将新的选项卡窗口移至拆分窗口?
拉米兹·乌丁

@RamizUddin没有简单的方法可以完成此操作(因为您不希望将其拆分为哪个窗口,这并不明显)。但是,您可以使用来找到当前选项卡页面的缓冲区编号,:echo bufnr("")并使用该编号可以使用:sp #3或分割窗口:sb 3(假设编号为3)。您可能可以提出一些映射或函数来简化此过程。
DrAl

1
如何缓冲区移到新选项卡,并保持其撤消/重做状态。换句话说,我不想在新选项卡中打开相同的文件,我想缓冲区从字面上移到新选项卡,因此可以在新选项卡中使用编辑历史记录。如果没有默认方法,我敢打赌,可以做一个插件,添加一个用于执行此操作的新快捷方式,该快捷方式将撤消历史记录写入新缓冲区的交换文件。
trusktr

2
@trusktr我以为可以在新选项卡中打开缓冲区:sb,但是在最新版本的Vim(> = 7.3)中,您还可以通过设置set undodir=/path/to/dir/ path / to / dir是您已经使用的目录来使用持久撤消为此目的而创建 set undofile。这将使您退出vim,然后重新启动并仍然保留undo / redo状态。
DrAl 2013年

103

尝试

:tabedit %<CR>

3
只是好奇为什么将<CR>包含在其中。
瑞士人2009年

17
出于相同的原因,我确实包含了“:”。这是正常模式下完整的vim按键组合,您可以在'nnoremap'和'nmap'中使用它
Mykola Golubyev 09年

6
除了将窗口克隆/复制到新选项卡(而不是先关闭然后在新选项卡中将其打开)之外,此方法同样有效。没什么大不了的。只是要注意的事情。
A-Dubb 2012年

6
这不会将缓冲区移到新选项卡,只是在新选项卡中打开相同的文件,但您将没有撤消/重做历史记录,等等
。– trusktr 2013年

5
C-w T是执行相同操作的更快方法
Dylanthepiguy

3

这会将最新的缓冲区移到新选项卡中,并在当前选项卡中恢复先前的缓冲区。我将一个新文件拖到我的Gvim中后使用

:sbp |wincmd p| wincmd T

您可以像这样将其映射到Ctrl-Backspace

:nnoremap <C-BS> :sbp<bar>wincmd p<bar>wincmd T<CR>

它的表现特别好

:set switchbuf=usetab

0

我一直在使用,它为您提供了两个可以绑定到一对热键或命令的功能,并且操作起来非常直观。我敢肯定,它提供的行为甚至比例如更加友好Ctrl-W_T

例如,当在多个选项卡中打开多个窗口时,使用此功能可以将当前窗口专门移动到下一个或上一个选项卡,如果将内容移动到第一个选项卡之前或最后一个选项卡之后,则它将进入一个全新的标签

这意味着如果您有2个选项卡,每个选项卡都有一个窗口,则将第一个选项卡的窗口向右移动会将其与第二个选项卡合并,以产生一个带有两个窗口的单个选项卡。我不知道使用传统命令来完成此操作有多复杂。

这意味着一对移动命令既可以在选项卡周围移动窗口,又可以将窗口拆分为多个选项卡(通过将窗口推到最末端),也可以将单独的选项卡连接到单个选项卡内的窗口中,几乎可以完成所有操作您可能需要缺少位置安排(这是一个单独的主题,内置的Ctrl-W+ Shift-HJKL命令可以正常使用)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.