Para cambiar dos ventanas divididas verticalmente para dividir horizontalmente
Ctrl- wtCtrl-wK
Horizontalmente a verticalmente:
Ctrl- wtCtrl-wH
Explicaciones:
Ctrl- wt hace que la primera ventana (topleft) sea actual
Ctrl- wK mueve la ventana actual a ancho completo en la parte superior
Ctrl- wH mueve la ventana actual a altura completa en el extremo izquierdo
Tenga en cuenta que t es minúscula, y K y H son mayúsculas.
Además, con solo dos ventanas, parece que puede soltar la parte Ctrl- wtporque si ya está en una de las dos ventanas, ¿cuál es el punto de actualizarla?
Entonces, si tiene dos ventanas divididas horizontalmente y está en la ventana inferior, simplemente use ^ WL.
demasiado php
77
.... El poder ... Mi vim-fu se duplicó hoy, gracias. Hay un montón de comandos ^ w interesantes (b, w, etc.)
Alex Hart
Sería bueno que esto funcionó cuando se usa el complemento NERDTree :-)
Eno
3
@Eno funciona bien para mí. Simplemente cierre su panel NERDTree antes de 'rotar' las divisiones, luego vuelva a abrirlo. : NERDTreeToggle (lo tengo asignado a una tecla de función para mayor comodidad).
Lambart
2
He agregado algunas asignaciones de líderes a mi configuración de vim: :nmap <leader>th <C-w>t<C-w>Hy:nmap <leader>tk <C-w>t<C-w>K
Ian Marcinkowski
324
Ctrl- wseguido por H, J, Ko L(capital) se moverá la ventana actual a la extrema left, bottom, topo right, respectivamente, como la navegación del cursor normal.
Los equivalentes en minúsculas mueven el foco en lugar de mover la ventana.
Inspirado por la respuesta de Steve, escribí una función simple que alterna entre divisiones verticales y horizontales para todas las ventanas en la pestaña actual. Puede vincularlo a la asignación como en la última línea a continuación.
function! ToggleWindowHorizontalVerticalSplit()
if !exists('t:splitType')
let t:splitType = 'vertical'
endif
if t:splitType == 'vertical' " is vertical switch to horizontal
windo wincmd K
let t:splitType = 'horizontal'
else " is horizontal switch to vertical
windo wincmd H
let t:splitType = 'vertical'
endif
endfunction
nnoremap <silent> <leader>wt :call ToggleWindowHorizontalVerticalSplit()<cr>
Funciona aún mejor para mí si lo obligo a permanecer en la misma división if winnr() == 1 windo wincmd J windo wincmd k else windo wincmd J endif y if winnr() == 1 windo wincmd L windo wincmd h else windo wincmd L endifespero que tenga sentido.
mjhoffmann
5
Siguiendo el consejo anterior de Mark Rushakoff , aquí está mi mapeo:
Respuestas:
La lista de correo de Vim dice (formateado para una mejor legibilidad):
Tenga en cuenta que t es minúscula, y K y H son mayúsculas.
Además, con solo dos ventanas, parece que puede soltar la parte Ctrl- w tporque si ya está en una de las dos ventanas, ¿cuál es el punto de actualizarla?
fuente
:nmap <leader>th <C-w>t<C-w>H
y:nmap <leader>tk <C-w>t<C-w>K
Ctrl- wseguido por H, J, Ko L(capital) se moverá la ventana actual a la extrema
left
,bottom
,top
oright
, respectivamente, como la navegación del cursor normal.Los equivalentes en minúsculas mueven el foco en lugar de mover la ventana.
fuente
Ctrl
-w
(no sé si^
significaCtrl
en su ejemplo).^
significaCtrl
.Cuando se tienen dos o más ventanas abiertas horizontal o verticalmente y desea cambiar a todos a la otra orientación, puede utilizar lo siguiente:
(cambiar a horizontal)
(cambiar a vertical)
Efectivamente va a cada ventana individualmente y usa ^WKo ^WH.
fuente
Los siguientes comandos ex (re) dividirán cualquier número de ventanas:
:vertical ball
:ball
Si hay búferes ocultos, la emisión de estos comandos también hará visibles los búferes ocultos.
fuente
:vert[ical] ball
en el documento:vert ball
también está bien y es más corto.:ball
reduce 3 ventanas verticales a 2 ventanas horizontales, mientras que:vert ball
asigna correctamente 3 ventanas horizontales a 3 verticales.En VIM, eche un vistazo a lo siguiente para ver diferentes alternativas de lo que podría haber hecho:
: ayuda abrir ventana
Por ejemplo:
Ctrl- W s
Ctrl- W o
Ctrl- W v
Ctrl- W o
Ctrl- W s
...
fuente
Ambas soluciones se aplican cuando solo existen dos ventanas.
Abrir ayuda en una división vertical por defecto
Agregue ambas líneas a
.vimrc
::vert[ical] {cmd}
siempre ejecuta elcmd
en una ventana dividida verticalmente.fuente
Inspirado por la respuesta de Steve, escribí una función simple que alterna entre divisiones verticales y horizontales para todas las ventanas en la pestaña actual. Puede vincularlo a la asignación como en la última línea a continuación.
fuente
if winnr() == 1 windo wincmd J windo wincmd k else windo wincmd J endif
yif winnr() == 1 windo wincmd L windo wincmd h else windo wincmd L endif
espero que tenga sentido.Siguiendo el consejo anterior de Mark Rushakoff , aquí está mi mapeo:
Editar: use Ctrl- w rpara intercambiar dos ventanas si no están en buen estado.
fuente