Come posso ripristinare le finestre in una griglia?


12

Se ho finestre disposte in quattro quadranti, come dalla seguente sequenza di comandi:

  • :tabnew
  • :vsplit
  • :split
  • <C-W>l
  • :split

quindi inserendo un comando come <C-W>J, questi non saranno più quadrati; in questo caso, forzerà una finestra a galleggiare in basso.

Come posso fare il contrario, cioè forzare le finestre a formare una forma quadrata?

Ho letto :help window-movingma non ho visto nulla di utile.


1
Non sono abbastanza chiaro su cosa stai cercando di ottenere quando premi <CW> J, che sposta "la finestra corrente in fondo, usando l'intera larghezza dello schermo", questo significa che le finestre non essere più in una formazione a griglia, per definizione. Cosa stai cercando di fare davvero con le tue finestre?
Ricco

3
@Rich Penso che OP stia semplicemente esemplificando una situazione dopo la quale potrebbe voler ripristinare le finestre alla formazione della griglia.
Gonçalo Ribeiro,

@ GonçaloRibeiro Corretto.
mercoledì


Sebbene non sia una risposta, se ti ritrovi a cercare esempi di codice per creare la tua soluzione, ti consiglio di controllare il favoloso progetto Microviche .
Nuova Alessandria,

Risposte:


4

Per quanto ne so, non esiste un modo semplice per organizzare divisioni aperte in una griglia di divisioni. In questo caso, il modo più semplice per tornare in una griglia è rettificare manualmente la struttura:

  1. chiudere la divisione fluttuante in alto
  2. tornare alla divisione occupando metà dello schermo
  3. suddividerlo nuovamente con :split <file>

Questo ti riporterà su una griglia. Il modo di manovrare le divisioni senza influire sul layout della finestra è usare [count] Ctrl - W x , che scambia la finestra corrente con la finestra [count].


So che posso farlo, ma ci sono un paio di aspetti negativi. (1) Se la finestra è l'unica vista di un determinato buffer e il buffer è sporco, è necessario :wqo :q!nessuno dei due è desiderabile. (2) Ciò ripristinerà qualsiasi impostazione specifica della finestra, come la posizione del cursore. (3) Ciò interromperà eventuali differenze in corso. In sostanza, le finestre sono cittadini di prima classe; distruggerli e crearne di nuovi semplicemente non è sufficiente.
mercoledì

@WChargin Parte di ciò scompare se si imposta vim per consentire buffer nascosti. Ma sì ...
derobert,

2
Invece di chiudere la finestra e dividere il buffer nella posizione desiderata, dividere una nuova finestra nel punto in cui si desidera andare, scambiarla con la finestra che si desidera spostare, quindi chiudere la nuova finestra (spostata).
Tommaso,

4

Puoi salvare il tuo layout preferito usando il winsaveviewcomando. Qui lo sto mappando \svper comodità:

nnoremap <Leader>sv :let g:myLayout = winsaveview()<CR>

Assicurati di eseguirlo prima di interrompere il layout! ;-)

Ora, in caso di interruzione accidentale del layout, è possibile ripristinarlo:

nnoremap <Leader>rv :call winrestview(g:myLayout)<CR>

4

Le chiavi predefinite per riorganizzare le finestre funzionano solo all'interno del loro gruppo suddiviso locale:

CTRL-W x   Exchange current window with next (in group)
CTRL-W r   Rotate windows down/right (in group)

Oppure aprono la finestra sul gruppo principale:

CTRL-W  H | J | K | L   Move window to left/top/bottom/right-most edge

Questi sono inadeguati quando si desidera spostare il buffer in uno degli altri gruppi divisi.

Ma in tali occasioni, il plug-in WindowSwap può aiutare . Ti consente di scambiare i buffer di due finestre arbitrarie.

<leader> yw   "Yank window": Yank the current window

<leader> pw   "Paste window": Swap the current window with the yanked window
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.