¿Cómo puede cambiar sus ventanas actuales de división horizontal a división vertical y viceversa en Vim?
Lo hice hace un momento por accidente, pero no puedo encontrar la llave de nuevo.
¿Cómo puede cambiar sus ventanas actuales de división horizontal a división vertical y viceversa en Vim?
Lo hice hace un momento por accidente, pero no puedo encontrar la llave de nuevo.
Respuestas:
La lista de correo de Vim dice (formateado para una mejor legibilidad):
Para cambiar dos ventanas divididas verticalmente para dividir horizontalmente
Ctrl- w t Ctrl-w K
Horizontalmente a verticalmente:
Ctrl- w t Ctrl-w H
Explicaciones:
Ctrl- w t hace que la primera ventana (topleft) sea actual
Ctrl- w K mueve la ventana actual a ancho completo en la parte superior
Ctrl- w H 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- w tporque si ya está en una de las dos ventanas, ¿cuál es el punto de actualizarla?
: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
o right
, respectivamente, como la navegación del cursor normal.
Los equivalentes en minúsculas mueven el foco en lugar de mover la ventana.
Ctrl
- w
(no sé si ^
significa Ctrl
en su ejemplo).
^
significa Ctrl
.
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)
:windo wincmd K
(cambiar a vertical)
:windo wincmd H
Efectivamente va a cada ventana individualmente y usa ^WKo ^WH.
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.
: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.
División horizontal a vertical
Ctrl+ Wpara comando de ventana, seguido de Shift+ Ho Shift+L
División vertical a horizontal
Ctrl+ Wpara comando de ventana, seguido de Shift+ Ko Shift+J
Ambas soluciones se aplican cuando solo existen dos ventanas.
Agregue ambas líneas a .vimrc
:
cabbrev help vert help
cabbrev h vert h
:vert[ical] {cmd}
siempre ejecuta el cmd
en una ventana dividida verticalmente.
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>
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 endif
espero que tenga sentido.
Siguiendo el consejo anterior de Mark Rushakoff , aquí está mi mapeo:
" vertical to horizontal ( | -> -- )
noremap <c-w>- <c-w>t<c-w>K
" horizontal to vertical ( -- -> | )
noremap <c-w>\| <c-w>t<c-w>H
noremap <c-w>\ <c-w>t<c-w>H
noremap <c-w>/ <c-w>t<c-w>H
Editar: use Ctrl- w rpara intercambiar dos ventanas si no están en buen estado.