web-dev-qa-db-fra.com

Comment faire basculer les fenêtres dans vim?

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?

118
Arnis Lapsa

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.

230
sehe

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
81
Nick

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.

11
William Pursell

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>
6
Greg Sexton