Comment faire pour passer d'une division verticale à une division horizontale à vimdiff?

je sais déjà comment utiliser le diffopt variable pour démarrer en mode diff avec l'horizontale/verticale divise, mais pas comment faire pour basculer entre les deux quand j'ai déjà 2 fichiers ouvrir à des fins de comparaison.

j'ai essayé la 'réponse acceptée' solution trouvée dans cet ancien post , mais en vain. Les commandes Ctrl+W n'ont pas fonctionné pour moi. Peut-être parce que j'exécute gVim en mode Windows-friendly?

36
demandé sur Community 2011-04-16 02:00:13

3 réponses

la commande suivante change une fente verticale en une fente horizontale:

ctrl + w puis J

pour revenir à une division verticale, utilisez soit:

ctrl + w H ou ctrl + w L

pour plus d'informations sur les fenêtres mobiles:

:h window-moving
:h ctrl-w_J
:h ctrl-w_K
:h ctrl-w_H
:h ctrl-w_L
63
répondu Peter Rincker 2011-04-17 13:52:00

vous pouvez également faire ctrl-w + <arrow key> pour sélectionner la fenêtre.

0
répondu electr0ninja 2016-10-17 21:26:52

je suis en retard, mais c'est peut-être une solution intéressante. La solution de @PeterRincker ne fonctionne que si vous avez seulement quelques fenêtres ouvertes sans fenêtres intérieures.

J'ai trouvé cette fonction (utile) dans ma configuration d'exécution que j'aime partager avec U. Il est destiné à être mappé comme liant de clé et de permettre à l'utilisateur de commuter la division actuelle à un spécifié. Notez qu'il ne bascule pas entre vertical et horizontal, mais l'utilisateur dire qui il aime (pourrait être actuellement active l'un de trop, même si ce scénario n'a aucun sens.) Le Vim window tree a toujours deux fenêtres comme "Partenaires". Les effets de ceci sont également observables lors du redimensionnement des fenêtres. Ce que je veux dire: déclencher la fonction, si s'applique à la fenêtre actuellement active et sa fenêtre "partenaire".

" 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>

Malheureusement, il est actuellement encore modifier la taille de la fenêtre et ne laissent pas la forme. Je suis en train de travailler sur elle, mais il n'est pas facile de faites-en, cause j'ai besoin de savoir la forme de la "partenaire" de la fenêtre.

0
répondu weilbith 2018-05-17 14:52:45