Pour changer deux fenêtres divisées verticalement en fenêtres horizontales
Ctrl- wtCtrl-wK
Horizontalement à verticalement:
Ctrl- wtCtrl-wH
Explications:
Ctrl- wt rend la première fenêtre (topleft) actuelle
Ctrl- wK déplace la fenêtre actuelle sur toute sa largeur tout en haut
Ctrl- wH 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- wtparce que si vous êtes déjà dans l'une des deux seules fenêtres, quel est l'intérêt de l'actualiser?
Donc, si vous avez deux fenêtres divisées horizontalement et que vous êtes dans la fenêtre inférieure, vous utilisez simplement ^ WL.
trop de php
7
.... La puissance ... Mon vim-fu a doublé aujourd'hui, merci. Il y a une tonne de commandes ^ w intéressantes (b, w, etc.)
Alex Hart
Ce serait bien si cela fonctionnait lors de l'utilisation du plugin NERDTree :-)
Eno
3
@Eno fonctionne bien pour moi. Basculez simplement votre panneau NERDTree fermé avant de «faire pivoter» les séparations, puis basculez-le de nouveau pour l'ouvrir. : NERDTreeToggle (je l'ai mappé à une touche de fonction pour plus de commodité).
Lambart
2
J'ai ajouté quelques mappings de leader à ma configuration vim: :nmap <leader>th <C-w>t<C-w>Het:nmap <leader>tk <C-w>t<C-w>K
Ian Marcinkowski
324
Ctrl- wsuivi H, J, Kou L(capital) se déplacera la fenêtre en cours à l'extrême left, bottom, topou rightrespectivement , comme la navigation du curseur normal.
Les équivalents en minuscules déplacent le focus au lieu de déplacer la fenêtre.
c'est beaucoup mieux puisque les utilisateurs utilisent hjkl pour se déplacer entre les tampons.
Afshin Mehrabani
30
La réponse acceptée est bonne, mais pour moi, cette réponse est plus facile à retenir. Merci!
Jon Carter
Fonctionne mieux avec nerdtree aussi.
arcseldon
Cela fonctionne pour moi sur macOS en préfixant Ctrl- w(je ne sais pas si cela ^signifie Ctrldans votre exemple).
Giovanni Benussi
@GiovanniBenussi oui, je pense ^ signifie Ctrl.
ma11hew28
47
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.
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>
Fonctionne encore mieux pour moi si je le force à rester dans la même division comme ça 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 endifHope qui a du sens.
mjhoffmann
5
En suivant le conseil de Mark Rushakoff ci - dessus , voici ma cartographie:
Réponses:
La liste de diffusion Vim indique (reformatée pour une meilleure lisibilité):
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?
la source
: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
ouright
respectivement , comme la navigation du curseur normal.Les équivalents en minuscules déplacent le focus au lieu de déplacer la fenêtre.
la source
Ctrl
-w
(je ne sais pas si cela^
signifieCtrl
dans votre exemple).^
signifieCtrl
.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)
(passer à la verticale)
Cela va effectivement à chaque fenêtre individuellement et en utilisant ^WKou ^WH.
la source
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.
la source
: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.Dans VIM, jetez un œil à ce qui suit pour voir différentes alternatives à ce que vous auriez pu faire:
: aide ouverture de fenêtre
Par exemple:
Ctrl- W s
Ctrl- W o
Ctrl- W v
Ctrl- W o
Ctrl- W s
...
la source
Les deux solutions s'appliquent lorsqu'il n'existe que deux fenêtres.
Ouvrir l'aide dans une division verticale par défaut
Ajoutez ces deux lignes à
.vimrc
::vert[ical] {cmd}
exécute toujours lecmd
dans une fenêtre divisée verticalement.la source
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.
la source
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:
Edit: utilisez Ctrl- w rpour échanger deux fenêtres si elles ne sont pas en bon état.
la source