¿Cómo muevo una ventana existente a una nueva pestaña?

151

¿Hay alguna manera de tomar una ventana existente (dividida) y ponerla en una nueva pestaña?

Drew Stephens
fuente
Si alguna vez vuelve a esta pregunta, cambie la respuesta aceptada, la de DrAI es mucho más correcta que la de Mykola.
gbr

Respuestas:

261

Además del :tabeditenfoque sugerido anteriormente , una forma más rápida de hacerlo es (en modo normal) presionar Ctrl- W Shift- T. Ctrl-W es el prefijo general para una amplia variedad de comandos de manipulación de ventanas.

Ver:

:help Ctrl-W_T
:help Ctrl-W
DrAl
fuente
3
Tenga en cuenta que lo help Ctrl-W_Tlleva a la entrada de ayuda de Ctrl-W_t(minúscula), sin embargo, más abajo en la página está la Ctrl-W_Tentrada (con T mayúscula), que dice "Mover la ventana actual a una nueva pestaña ..."
Rabarberski
1
@DrAl y ¿cómo movemos una nueva ventana de pestaña para dividir ventana?
Ramiz Uddin
@RamizUddin No hay una manera simple de hacer esto (ya que no es obvio en qué ventana desea dividirse). Sin embargo, puede encontrar el número de búfer para su página de pestañas actual :echo bufnr("")y, con este número, puede dividir una ventana con :sp #3o :sb 3(suponiendo que el número sea 3). Es posible que pueda crear algunas asignaciones o funciones para simplificar esto.
DrAl
1
¿Cómo mueve el búfer a una nueva pestaña, manteniendo su estado deshacer / rehacer En otras palabras, no quiero abrir el mismo archivo en una pestaña nueva, quiero mover literalmente el búfer a una pestaña nueva, para que el historial de edición se pueda usar en la pestaña nueva. Si no hay una forma predeterminada de hacer esto, apuesto a que se puede hacer un complemento que agregue un nuevo acceso directo para hacer esto que escriba el historial de deshacer en el archivo de intercambio para el nuevo búfer.
trusktr
2
@trusktr Me imagino que abrir el búfer en una nueva pestaña :sbfuncionaría, pero con las versiones recientes de Vim (> = 7.3) también puede usar deshacer persistente configurando set undodir=/path/to/dirdónde / ruta / a / dir es un directorio que ha creado con el propósito y luego set undofile. Esto le permitirá salir de vim y luego reiniciar y conservar el estado de deshacer / rehacer.
DrAl
103

Tratar

:tabedit %<CR>
Mykola Golubyev
fuente
3
Es curioso por qué incluiste el <CR> con eso.
Suiza
17
Por la misma razón, sí incluí ":". Esta es la combinación completa de teclas vim en modo normal y puede usarla en 'nnoremap' y en 'nmap'
Mykola Golubyev
66
Esto también funciona, excepto que clona / duplica la ventana a una nueva pestaña en lugar de cerrarla primero y luego abrirla en una nueva pestaña. No es un gran trato. Solo algo a tener en cuenta.
A-Dubb
66
Esto no mueve el búfer a una nueva pestaña, solo abre el mismo archivo en una nueva pestaña, pero no tendrá historial de deshacer / rehacer, etc.
trusktr
55
C-w Tes la forma más rápida de hacer lo mismo
Dylanthepiguy
3

Esto mueve el búfer más nuevo en una nueva pestaña y restaura el búfer anterior en la pestaña actual. Lo uso después de arrastrar un nuevo archivo a mi Gvim

:sbp |wincmd p| wincmd T

Puede asignarlo así a Ctrl-Retroceso

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

funciona especialmente bien con

:set switchbuf=usetab

fuente
0

He estado usando esto, que le da dos funciones que pueden vincularse a un par de teclas de acceso rápido o comandos, y que funciona de manera bastante intuitiva. Estoy bastante seguro de que ofrece un comportamiento aún más amigable que, por ejemplo Ctrl-W_T.

Por ejemplo, cuando hay varias ventanas abiertas en varias pestañas, el uso de esta función le permite mover específicamente la ventana actual a la pestaña siguiente o anterior, y si mueve algo a antes de la primera pestaña o después de la última pestaña, entonces se activa en una pestaña completamente nueva.

Esto significa que si tiene 2 pestañas, cada una con una sola ventana, al mover la ventana de la primera pestaña a la derecha se combinará con la segunda pestaña para obtener una sola pestaña con dos ventanas. No sé cuán complicada es lograr esta operación usando comandos tradicionales.

Lo que esto significa es que un solo par de comandos de movimiento permite tanto desplazar ventanas alrededor de las pestañas, dividir ventanas en pestañas (empujando una ventana hasta el final) y unir pestañas separadas en ventanas dentro de una sola pestaña, casi todo es posible que desee, sin una disposición posicional (que es un tema separado y para el cual los comandos Ctrl-W+ incorporados Shift-HJKLfuncionan bien).

Steven Lu
fuente