Duplicate possible:
Pour passer de la division verticale à la division horizontale rapide dans Vim
Si j'ai 2 fenêtres divisées horizontalement, comment les faire pivoter pour obtenir 2 fenêtres divisées verticalement?
Et comment changer de tampon?
Si vous les avez divisés verticalement C-wJ déplacer un en bas
Si vous les avez divisés horizontalement C-wL se déplacer un à droite
Pour faire une rotation dans une "colonne" ou une "ligne" de fenêtres divisées, C-wC-r
Les commandes suivantes peuvent être utilisées pour changer la disposition de la fenêtre. Par exemple, quand il y a deux fenêtres divisées verticalement, CTRL-W K changera cela dans les fenêtres divisées horizontalement. CTRL-W H fait l'inverse.
Ctrl-wH ou tapez :wincmd H
pour aller de horizontal à vertical layout.
Ctrl-wJ ou tapez :wincmd J
pour aller de vertical à horizontal layout.
Ctrl-wr ou tapez :wincmd r
à permutez les deux mémoires tampons mais conservez la disposition de la fenêtre.
Ctrl-ww ou tapez :wincmd w
à déplacez le curseur entre les deux fenêtres/tampons.
Vous souhaiterez peut-être lier une ou plusieurs de ces séquences pour accélérer la saisie. Je mets cela dans mon .vimrc pour que ,l déplace le curseur sur le tampon suivant dans l'onglet en cours:
let mapleader = ","
nmap <Leader>l <C-w>w
CTRL-WSHIFT-H fera pivoter l'orientation, CTRL-WH se déplace vers la fenêtre de gauche, CTRL-WL se déplace vers la droite. Voir
: aide divisée
et
: aide ^ w
pour plus d'informations.
Les réponses actuelles fonctionnent parfaitement si vous n’avez que deux fenêtres ouvertes. Si vous avez plus que cela, la logique pour déplacer des fenêtres peut devenir poilue.
J'ai ceci dans mon fichier .vimrc pour me permettre de "tirer" et de "supprimer" un tampon, puis de le coller dans une fenêtre sur le tampon actuel ou en tant que division [v].
fu! PasteWindow(direction) "{{{
if exists("g:yanked_buffer")
if a:direction == 'edit'
let temp_buffer = bufnr('%')
endif
exec a:direction . " +buffer" . g:yanked_buffer
if a:direction == 'edit'
let g:yanked_buffer = temp_buffer
endif
endif
endf "}}}
"yank/paste buffers
:nmap <silent> <leader>wy :let g:yanked_buffer=bufnr('%')<cr>
:nmap <silent> <leader>wd :let g:yanked_buffer=bufnr('%')<cr>:q<cr>
:nmap <silent> <leader>wp :call PasteWindow('edit')<cr>
:nmap <silent> <leader>ws :call PasteWindow('split')<cr>
:nmap <silent> <leader>wv :call PasteWindow('vsplit')<cr>
:nmap <silent> <leader>wt :call PasteWindow('tabnew')<cr>