Vim: ¿Mover ventana hacia la izquierda / derecha?

215

En Vim, ¿es posible "mover" una ventana hacia la izquierda o hacia la derecha? Por ejemplo, ¿similar a <c-w> ro <c-w> x, pero izquierda / derecha en lugar de arriba / abajo?

Por ejemplo, si tengo este diseño:

+---+---+---+
|   |   +---+
| A +---+---+
|   |   |   |
+---+---+---+

Me gustaría convertirlo en esto:

+---+---+---+
|   |   +---+
+---+ A +---+
|   |   |   |
+---+---+---+

Lo cual es difícil / molesto de hacer <c-w> {H,J,K,L}.

David Wolever
fuente

Respuestas:

425

Ctrl w le brinda el "modo de comando de Windows", permitiendo los siguientes modificadores:

  • Ctrl w+ R- Para rotar ventanas hacia arriba / izquierda.

  • Ctrl w+ r- Para rotar ventanas hacia abajo / derecha.

También puede usar el "modo de comando de Windows" con las teclas de navegación para cambiar la posición de una ventana:

  • Ctrl w+ L- Mueve la ventana actual a la "extrema derecha"

  • Ctrl w+ H- Mueve la ventana actual al "extremo izquierdo"

  • Ctrl w+ J- Mueve la ventana actual al "fondo"

  • Ctrl w+ K- Mueve la ventana actual a la "parte superior"

Echa un vistazo :help window-movingpara más información

Ricardo Valeriano
fuente
2
<c-w> rsolo gira verticalmente.
David Wolever
10
@David Wolever, debe usar las letras mayúsculas en este caso, algo como: Ctrl-W + Shift-L, por ejemplo. Creo que esto puede ser lo que estás buscando.
Ricardo Valeriano
@David: acabo de probar esto y <cw> r funcionó horizontalmente para mí.
ostler.c
3
@ ostler.c crea una división vertical, luego crea una división horizontal dentro de una de las columnas. Ahora use <cw> r y solo cambia las dos ventanas dentro de una división vertical.
Chev
1
@ nn0p no, mueven las ventanas. <cw> h moverá el cursor a la siguiente ventana a la izquierda, mientras que <cw> H moverá la ventana actual (junto con el cursor) al extremo izquierdo.
MarSoft
58

Esta es la más útil para mí (y es probablemente la respuesta correcta a la pregunta):

  • Ctrl W+ xO Ctrl W+ Ctrl x- Rota la ventana enfocada actual con la ventana más cercana a la derecha.
fabiomcosta
fuente
muy útil cuando estás en medio de los paneles y quieres intercambiar con el de la derecha. Gracias por este!
Daniel Andrei Mincă
8

¿Desea mover la ventana o solo la posición del cursor?

Al lado de la rotación o el ciclismo, como ya lo ha dicho, sólo es posible mover la propia ventana a la muy superior, inferior, izquierda o derecha, respectivamente, con:

^W K
^W J
^W H
^W L

No creo que haya una forma predeterminada de mover una ventana un lugar a la derecha.

Bitterzoet
fuente
1
Quiero mover las ventanas, no el cursor.
David Wolever
1
Entonces esto es lo más lejos que puede llegar con los comandos de la ventana vim, si esto fue útil para usted,
márquelo
2
Si pudiera, rechazaría el comentario de @Bitterzoet. Ver las respuestas anteriores
Nathan
1

Realmente parece que vim no puede hacer esto con los mapas de claves estándar. La documentación dice que los comandos ^ WK, J, H y L funcionan creando la división y abriendo el búfer en la posición actual, por lo que escribí una función a la misma: Ocultar el búfer, mover a la izquierda, dividir y luego abra el búfer original:

" Rotate a window horizontally to the left
function! RotateLeft()
    let l:curbuf = bufnr('%')
    hide
    wincmd h
    split
    exe 'buf' l:curbuf
endfunc

" Rotate a window horizontally to the right
function! RotateRight()
    let l:curbuf = bufnr('%')
    hide
    wincmd l
    split
    exe 'buf' l:curbuf
endfunc
W Klink
fuente
-6
  • ctrl + h mover el cursor a la siguiente ventana (derecha)

  • ctrl + l mover el cursor a la ventana anterior (izquierda)

Para obtener más información, consulte: :help window-moving

xautjzd
fuente
3
Incorrecto. Ctrl+h/lno son enlaces estándar para la navegación de ventanas (aunque, por supuesto, pueden configurarse y algunos complementos los ofrecen). Y esto no responde la pregunta original de todos modos.
MarSoft