2009-08-13 17 views

Respuesta

746

Vim mailing list dice (re-formateado para una mejor legibilidad):

Para cambiar dos dividida verticalmente ventanas para horizonally dividir

Ctrl - wtCtrl - wK

horizontalmente a verticalmente:

Ctrl - wtCtrl - wH

Explicaciones:

Ctrl - wt hace que la primera ventana (superior izquierda) actual Ctrl - wK mueve la ventana actual a de ancho completo en la parte superior Ctrl - wH mueve la ventana actual a toda la altura en el extremo izquierdo

Tenga en cuenta que la t es minúscula , y K y H son mayúsculas.

Además, con sólo dos ventanas, parece que se puede soltar el Ctrl - wt parte porque si usted está ya en una de las dos ventanas, ¿cuál es el punto de hacer que la corriente?

+18

Así que si usted tiene dos ventanas divididas horizontalmente, y se encuentra en la ventana inferior, solo usas^WL. –

+6

.... El poder ... Mi vim-fu se duplicó hoy, gracias. Hay un montón de comandos^w interesantes (b, w, etc.) –

+4

de alguna manera no funciona para mí .. =/ – holms

26

En VIM, echar un vistazo a la siguiente para ver diferentes alternativas para lo que podría haber hecho:

: ayuda apertura de ventana

Por ejemplo:

Ctrl - Ws
Ctrl - Wo
Ctrl - Wv
Ctrl - Wo
Ctrl - Ws
...

237

^w seguido por el capital H, J, K o L moverá la ventana actual a la extrema left, bottom, top o right, respectivamente, como la navegación del cursor normal.

Los equivalentes minúsculas mueven el foco en lugar de mover la ventana.

+2

es mucho mejor, ya que los usuarios usan hjkl para moverse entre los búferes. –

+15

La respuesta aceptada es buena, pero para mí, esta respuesta es más fácil de recordar. ¡Gracias! –

+0

Funciona mejor con nerdtree también. – arcseldon

27

Los siguientes comandos ex se (re) dividir cualquier número de ventanas:

  • Para dividir verticalmente (por ejemplo, hacer divisores verticales entre las ventanas), tipo :vertical ball
  • Para dividir horizontalmente, tipo :ball

Si hay búferes ocultos, la emisión de estos comandos también hará que los búferes ocultos sean visibles.

+0

Esta debería ser la respuesta aceptada, ya que la respuesta aceptada actual solo funcionará para dos archivos. Esta respuesta es más completa. – DrStrangepork

+0

': vert [ical] ball' en el documento así': vert ball' también está bien y es más corto. – Titou

+0

': ball' reduce 3 ventanas verticales a 2 ventanas horizontales, mientras' 'vert ball" asigna correctamente 3 ventanas horizontales a 3 verticales. – Titou

32

Cuando se tienen dos o más ventanas abiertas horizontalmente o verticalmente y desea cambiar los todo a la otra orientación, puede utilizar el siguiente:

(cambia a horizontal)

:windo wincmd K 

(interruptor a la vertical)

:windo wincmd H 

es effectiv Ely va a cada ventana individual y utilizando ^WK o ^WH.

4

siguiente consejo de Mark Rushakoff above, aquí es 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: uso Ctrl - wr a intercambiar dos ventanas si no están en el buen orden.

2

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>