web-dev-qa-db-fra.com

Pour passer de la division verticale à la division horizontale rapide dans Vim

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é.

567

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?

842
Mark Rushakoff

Ctrl-w suivi par HJK 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.

297
respectTheCode

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.

41
Steve

Les commandes ex suivantes vont (re) diviser un nombre quelconque de fenêtres:

  • Pour scinder verticalement (par exemple, séparer verticalement entre fenêtres), tapez :vertical ball
  • Pour diviser horizontalement, tapez :ball

S'il existe des mémoires tampons masquées, ces commandes les rendent également visibles.

30
Mark

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
...

27
Anon

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.

6
Serge Stroobandt

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>
5
Adam Faryna

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.

5
Jabba