Comment pouvez-vous passer vos fenêtres actuelles de la division horizontale à la division verticale et vice versa dans Vim?
Je l’ai fait il ya un moment par accident mais je ne retrouve plus la clé.
liste de diffusion Vim dit (reformaté pour une meilleure lisibilité):
Pour changer deux fenêtres divisées verticalement en divisions horizontales
Ctrl-wtCtrl-wK
Horizontalement à verticalement:
Ctrl-wtCtrl-wH
Explications:
Ctrl-wt rend la première fenêtre (topleft) courante
Ctrl-wK déplace la fenêtre actuelle sur toute la largeur en haut
Ctrl-wH déplace la fenêtre en cours à pleine hauteur à l'extrême gauche
Notez que t est en minuscule et que K et H sont en majuscule.
En outre, avec seulement deux fenêtres, il semble que vous pouvez laisser tomber le Ctrl-wt partie parce que si vous êtes déjà dans l’une des deux seules fenêtres, quel est l’intérêt de l’actualiser?
Ctrl-w suivi par H, J, K ou L (majuscule) déplacera la fenêtre actuelle à l'extrême left
, bottom
, top
ou right
respectivement comme pour la navigation par curseur normale.
Les équivalents minuscules déplacent le focus au lieu de déplacer la fenêtre.
Lorsque vous avez deux ou plus fenêtres s'ouvrent horizontalement ou verticalement et que vous souhaitez les basculer toutes vers l'autre orientation, vous pouvez utiliser les éléments suivants:
(passage à l'horizontale)
:windo wincmd K
(passer à la verticale)
:windo wincmd H
Il va effectivement à chaque fenêtre individuellement et en utilisant ^WK ou ^WH.
Les commandes ex suivantes vont (re) diviser un nombre quelconque de fenêtres:
:vertical ball
:ball
S'il existe des mémoires tampons masquées, ces commandes les rendent également visibles.
Dans VIM, examinez les éléments suivants pour voir différentes alternatives pour ce que vous auriez pu faire:
: aide fenêtre d'ouverture
Par exemple:
Ctrl-Ws
Ctrl-Wo
Ctrl-Wv
Ctrl-Wo
Ctrl-Ws
...
Scission horizontale à verticale
Ctrl+W pour la commande window, suivi de Shift+H ou Shift+L
Scission verticale à horizontale
Ctrl+W pour la commande window, suivi de Shift+K ou Shift+J
Les deux solutions s'appliquent lorsqu'il n'y a que deux fenêtres.
Inspiré par la réponse de Steve, j'ai écrit une fonction simple qui bascule entre les divisions verticales et horizontales pour toutes les fenêtres de l'onglet en cours. Vous pouvez le lier au mappage comme dans la dernière ligne ci-dessous.
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>
Suivant le conseil de Mark Rushakoff ci-dessus , voici ma cartographie:
" 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
Edit: use Ctrl-wr pour échanger deux fenêtres si elles ne sont pas dans le bon ordre.