vim windows-xp split vimdiff

¿Cómo puedo alternar entre una división vertical y una horizontal en vimdiff?



windows-xp split (3)

Ya sé cómo usar la variable diffopt para iniciar el modo diff con divisiones horizontales / verticales, pero no cómo alternar entre las dos cuando ya tengo 2 archivos abiertos para comparar.

Intenté la solución ''Respuesta aceptada'' encontrada en esta publicación anterior , pero fue en vano. Los comandos Ctrl + W no funcionaron para mí. ¿Quizás porque estoy ejecutando gVim en modo amigable para Windows?


El siguiente comando cambiará una división vertical en una división horizontal:

ctrl + w luego J

Para volver a una división vertical, use:

ctrl + w H o ctrl + w L

Para obtener más información sobre cómo mover ventanas:

:h window-moving :h ctrl-w_J :h ctrl-w_K :h ctrl-w_H :h ctrl-w_L


Llegué tarde, pero tal vez esta es una solución interesante. La solución de @PeterRincker solo funciona si solo tiene unas pocas ventanas abiertas sin ventanas internas.
Encontré esta función (útil) en la configuración de tiempo de ejecución que me gusta compartir con usted. Está destinado a asignarse como enlace de claves y permitir que el usuario cambie la división actual a una especificada. Marque que no alterna entre vertical y horizontal, pero el usuario indica cuál le gusta (también podría estar activo en ese momento, también si este escenario no tiene sentido). El árbol de la ventana de Vim siempre tiene dos ventanas como "socios" . Los efectos de esto también son observables al redimensionar ventanas. Lo que quiero decir: active la función, si aplica a la ventana actualmente activa y su ventana "partner".

" Switch to a vertical or horizontal split between two windows. " Switching to currently used split results into the equal split. " This is between the current window and the one window which is focused, when close the active window. " This function does not adjust the windows height after the switch, cause this can''t work correctly. " " Arguments: " horizontal - Boolean to differ between both layouts. " function! s:switch_window_split(horizontal) abort let l:bufnr = bufnr(''%'') " Get current buffer number to restore it in the new window. if a:horizontal | let l:vert = '''' | else | let l:vert = ''vert '' | endif " Close current window and open new split with the cached buffer number. wincmd c execute l:vert . ''sbuffer '' . l:bufnr endfunction " Switch split layout. nnoremap <leader>wS :<C-u>call <SID>switch_window_split(v:true)<CR> nnoremap <leader>wV :<C-u>call <SID>switch_window_split(v:false)<CR>

Desafortunadamente, actualmente todavía cambia el tamaño de la ventana y no deja la forma como está. Estoy trabajando en ello, pero no es tan fácil de lograr, porque tengo que saber la forma de la ventana "socio".


También puede hacer ctrl-w + <arrow key> para seleccionar la ventana.