Comment pouvez-vous basculer vos fenêtres actuelles du fractionnement horizontal au fractionnement vertical et vice versa dans Vim?
Je l'ai fait il y a un instant par accident mais je ne retrouve plus la clé.
Comment pouvez-vous basculer vos fenêtres actuelles du fractionnement horizontal au fractionnement vertical et vice versa dans Vim?
Je l'ai fait il y a un instant par accident mais je ne retrouve plus la clé.
Réponses:
La liste de diffusion Vim indique (reformatée pour une meilleure lisibilité):
Pour changer deux fenêtres divisées verticalement en fenêtres horizontales
Ctrl- w t Ctrl-w K
Horizontalement à verticalement:
Ctrl- w t Ctrl-w H
Explications:
Ctrl- w t rend la première fenêtre (topleft) actuelle
Ctrl- w K déplace la fenêtre actuelle sur toute sa largeur tout en haut
Ctrl- w H déplace la fenêtre actuelle à pleine hauteur à l'extrême gauche
Notez que le t est en minuscules, et le K et H sont en majuscules.
De plus, avec seulement deux fenêtres, il semble que vous pouvez supprimer la partie Ctrl- w tparce que si vous êtes déjà dans l'une des deux seules fenêtres, quel est l'intérêt de l'actualiser?
:nmap <leader>th <C-w>t<C-w>H
et:nmap <leader>tk <C-w>t<C-w>K
Ctrl- wsuivi H, J, Kou L(capital) se déplacera la fenêtre en cours à l'extrême left
, bottom
, top
ou right
respectivement , comme la navigation du curseur normal.
Les équivalents en minuscules déplacent le focus au lieu de déplacer la fenêtre.
Ctrl
- w
(je ne sais pas si cela ^
signifie Ctrl
dans votre exemple).
^
signifie Ctrl
.
Lorsque vous avez deux fenêtres ou plus ouvertes horizontalement ou verticalement et que vous souhaitez les basculer toutes dans l'autre orientation, vous pouvez utiliser ce qui suit:
(passer à l'horizontale)
:windo wincmd K
(passer à la verticale)
:windo wincmd H
Cela va effectivement à chaque fenêtre individuellement et en utilisant ^WKou ^WH.
Les commandes ex suivantes vont (re) diviser n'importe quel nombre de fenêtres:
:vertical ball
:ball
S'il existe des tampons masqués, l'exécution de ces commandes rendra également les tampons masqués visibles.
:vert[ical] ball
dans le doc :vert ball
est donc aussi ok et plus court.
:ball
réduit 3 fenêtres verticales à 2 fenêtres horizontales, tout en :vert ball
mappant correctement 3 fenêtres horizontales à 3 verticales.
Division horizontale à verticale
Ctrl+ Wpour la commande de fenêtre, suivi de Shift+ Hou Shift+L
Division verticale à horizontale
Ctrl+ Wpour la commande de fenêtre, suivi de Shift+ Kou Shift+J
Les deux solutions s'appliquent lorsqu'il n'existe que deux fenêtres.
Ajoutez ces deux lignes à .vimrc
:
cabbrev help vert help
cabbrev h vert h
:vert[ical] {cmd}
exécute toujours le cmd
dans une fenêtre divisée verticalement.
Inspiré par la réponse de Steve, j'ai écrit une fonction simple qui bascule entre les séparations verticales et horizontales pour toutes les fenêtres de l'onglet actuel. 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>
if winnr() == 1 windo wincmd J windo wincmd k else windo wincmd J endif
et à if winnr() == 1 windo wincmd L windo wincmd h else windo wincmd L endif
Hope qui a du sens.
En 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: utilisez Ctrl- w rpour échanger deux fenêtres si elles ne sont pas en bon état.