Comment puis-je maximiser une fenêtre fractionnée?

110

En invoquant :helpdans Vim, j'ai obtenu la page de manuel d'aide avec une fenêtre fractionnée. Je souhaite agrandir la fenêtre du manuel d'aide et fermer l'autre fenêtre.

Comment puis-je faire ceci? Quelle est la commande Vim pour faire cela?

modérément
la source

Réponses:

88

Avec : help [topic] vous ouvrez un sujet qui vous intéresse.
Ctrl-Wo minimisera les autres fenêtres (ne laissant que la fenêtre d'aide ouverte / maximisée).
(Ctrl-Wo signifie maintenir Ctrl, appuyez sur W, puis sur o)

Tour
la source
39
ou,: seul fera le travail.
shibly
14
À partir du fichier d'édition, comment puis-je revenir au manuel d'aide après avoir fait CTRL + W o?
shibly
3
@guru: C-w, ^, :buf OtherFile.txt, :sbuf Otherfile.txtetc. (voir l' aide pour wincmd, switchbufpour plus de détails). La chose funy est que mon ( à mon humble avis) correcte réponse n'a pas encore été donné ...
sehe
2
@ldigas: c'est une opinion (surprenante). À moins que vous ne citiez une source fiable, je vais considérer cela comme votre préférence personnelle, vraiment. Je ne les utilise généralement pas, mais j'ai récemment découvert que je les utilisais pour des choses comme celle-ci (maximiser temporairement un sidebuffer; faire des choses puissantes comme avoir plusieurs différences côte à côte disjointes dans une seule session vim). Les onglets sont également un miracle de convivialité avec gvim --remote. J'utilise toujours se guioptions=agimparce que je préfère le rendu des onglets de type console.
sehe
23
cela fermera d'autres fenêtres, et si vous avez une ou plusieurs fenêtres dans lesquelles vous avez apporté des modifications et non enregistrées, cela ne fonctionnera pas - je pense également que la question consiste à maximiser la fenêtre pour qu'elle fonctionne pendant une courte période dans cet état, puis plus tard revenir à l'état précédent - en fermant toutes les fenêtres, vous devrez utiliser votre fichier de session ou ouvrir manuellement toutes les autres fenêtres pour revenir
serup
133

Vous pouvez utiliser Ctrl+WT( c'est une majusculeT ) pour déplacer n'importe quelle fenêtre ouverte vers son propre onglet.

Comme mentionné par d'autres Ctrl+W_/ Ctrl+W|pour maximiser la disposition actuelle de l'onglet / de la fenêtre (tout en respectant les paramètres de hauteur / largeur min pour diverses autres fenêtres).

( Ctrl+W=redimensionne toutes les fenêtres à la même taille, en respectant les paramètres de hauteur / largeur minimum)

Éditer vers le commentaire

  1. démarrer vim (par exemple gvim /tmp/test.cpp )
  2. invoquer l'aide :help various-motions - ouvre une fenêtre fractionnée
  3. déplacer l'aide dans un onglet séparé maximisé: C-wT
  4. bonne lecture du manuel :)
  5. replacez l'aide dans l'onglet d'origine:

    mAZZ<C-w>S`A
    
    • mA: régler la marque globale A
    • ZZ: fermer le tampon / onglet d'aide
    • C-wS: fenêtre originale divisée
    • `A: sauter à la marque enregistrée A

Vous pouvez éviter d'utiliser une marque pour les tampons normaux (sans aide). Faites-moi savoir si vous êtes intéressé.

sehe
la source
4
Après avoir obtenu l'onglet avec CTRL + WT, comment puis-je revenir aux fenêtres fractionnées d'origine?
shibly
2
@guru: changez d'onglet comme d'habitude (utilisez Ctrl-PgUp, Ctrl-PgDownou :tabnext, :tabprev). Pour fermer la nouvelle (aide) onglet, l' utilisation ZZ, Ctrl-W, C, :q, :clo, :tabcloseou de toute autre manière que vous habituellement les fenêtres se referment / onglets
sehe
1
Non, ce n'était pas la question. Supposons que vous ayez deux onglets, maintenant vous ne voulez aucun onglet, vous voulez que deux tampons soient des fenêtres fractionnées. Y a-t-il une seule commande pour faire cela?
shibly
Édition de la question avec procédure générale. ( Je tiens à ajouter que le ton de vos commentaires peut rencontrer plutôt hostile dans la langue écrite,. "No, that was not the question"Peut paraître comme une réprimande , je suis sûr que vous ne veux pas dire mal. )
sehe
@guru: la réponse est mise à jour. C'était un peu plus compliqué que prévu car les tampons d'aide sont spéciaux (et vous ne pouvez pas les utiliser :sbufcomme je le préfère normalement). Hope this helps
sehe
53

Vous pouvez agrandir une fenêtre à sa taille maximale en utilisant Ctrl+W_(trait de soulignement). La taille finale de la fenêtre développée sera limitée par la valeur de l' winminheightoption. Lorsque vous fermez la fenêtre d'aide, vos fenêtres précédentes seront restaurées à leurs anciennes tailles.

Greg Hewgill
la source
19
Ctrl+W o ferme les autres fenêtres, donc elles sont parties. C'est pourquoi j'utilise Ctrl+W _.
Greg Hewgill
2
Comment puis-je récupérer les deux fenêtres séparées d'origine avec le fichier d'édition et avec le manuel d'aide?
2011
3
La Ctrl+W =commande redimensionne les fenêtres afin qu'elles aient toutes à peu près la même taille.
Greg Hewgill
14
Pour les fractionnements verticaux, vous voudrez utiliser Ctrl+W |.
Achal Dave
2
à toutes les âmes perdues qui se produisent sur ce fil ... pour revenir aux vues fractionnées, utilisez ctrl+w = // cela rend toutes les fenêtres de la même taille
duggi
19

Je préfère utiliser des onglets pour cela. Utilisation

:tabedit %

pour ouvrir un fichier agrandi dans un nouvel onglet, une fois que vous avez terminé, revenez à l'ancienne configuration avec toutes les fenêtres en utilisant

:tabclose

Je trouve que c'est la solution idéale car cela fonctionne avec :cwet le plugin Tagbar. Tiré de: vim.wikia

Azrael3000
la source
13

J'aime utiliser «M» pour maximiser et «m» pour minimiser.

Cela n'aura pas l'air génial car cela réduira toutes les autres fenêtres ouvertes qui se trouvent dans le même tampon, mais je l'ai trouvé plus utile lorsqu'il s'agit d'onglets. Ainsi, par exemple, au lieu d'ouvrir un nouvel onglet pour ce fichier, vous devez le fermer une fois que vous avez terminé ou que vous souhaitez le minimiser.

nnoremap <C-W>M <C-W>\| <C-W>_
nnoremap <C-W>m <C-W>=

La raison de nnoremap est que je ne me soucie pas du mappage récursif, mais juste la carte devrait également fonctionner.

Gustavo Matias
la source
1
Si vous utilisez nnoremap <C-W>M <C-W>\|<C-W>_(sans l'espace après |), le curseur ne se déplacera pas de 1 à chaque maximisation.
rsanden le
1
J'aime cela en utilisant une barre oblique inverse ( nnoremap <C-W>\ <C-W>\|<C-W>_). Il semble naturel avec les liaisons par défaut |, _et =.
rsanden le
6

Vous pouvez obtenir la fenêtre d'aide en taille réelle sans fermer / redimensionner les autres fenêtres en utilisant

tab help {topic}

Cela ouvrira la fenêtre d'aide dans un nouvel onglet, les autres fenêtres seront laissées telles quelles (vraiment redimensionnées pour que la tabline puisse être affichée, mais ce n'est qu'une ligne supplémentaire au-dessus). Vous pouvez fermer l'aide comme d'habitude: au moins :bw<CR>et <C-w>ctravailler pour moi en fermant également un nouvel onglet.

ZyX
la source
5

Installez le plugin vim-maximizer , puis vous pouvez maximiser la fenêtre actuelle et restaurer avecF3

Searene
la source
2

Pour obtenir l'aide que vous, puis fermez l'autre fenêtre, faites ceci: :helpCTRL-WCTRL-W:close. Ensuite, vous aurez juste l'aide.

Jeff Ferland
la source
1

dans votre .vimrc, placez simplement

nmap - :res<CR>:vertical res<CR>$

Lorsque vous souhaitez agrandir la fenêtre actuelle, appuyez simplement sur - en mode commande. Appuyez sur = lorsque vous souhaitez restaurer le dernier état de plusieurs fenêtres

blessdyb
la source
2
Bien mais = ne restaure pas le «dernier statut».
majkinetor
1

D'une manière ou d'une autre, le plugin ZoomWin ne fonctionnait pas du tout pour moi, je vois maintenant qu'il y a d'autres plugins mais j'ai déjà écrit ceci et me donne l'effet exact que je voulais (avec une petite bizarrerie détaillée ci-dessous) :

function! ToggleZoom(zoom)
  if exists("t:restore_zoom") && (a:zoom == v:true || t:restore_zoom.win != winnr())
      exec t:restore_zoom.cmd
      unlet t:restore_zoom
  elseif a:zoom
      let t:restore_zoom = { 'win': winnr(), 'cmd': winrestcmd() }
      exec "normal \<C-W>\|\<C-W>_"
  endif
endfunction

augroup restorezoom
    au WinEnter * silent! :call ToggleZoom(v:false)
augroup END
nnoremap <silent> <Leader>+ :call ToggleZoom(v:true)<CR>

Utilisez la touche mappée (Leader et + dans mon cas) pour basculer entre la mise en page maximisée / précédente. Si vous passez à un autre fractionnement dans le même onglet, la maximisation est désactivée.

Si vous changez d'onglet, la division reste maximisée, même si d'une manière ou d'une autre, elle ne couvrira plus toute la largeur totale, les fenêtres minimisées en largeur récupérant environ 4 colonnes ou quelque chose du genre. Quoi qu'il en soit, cela fonctionne de manière acceptable pour moi, même avec cette petite bizarrerie.

edit: d'une manière ou d'une autre, cela fonctionne bien maintenant, doit avoir gâché d'une manière ou d'une autre avant.

à
la source