Wie kann ich meine Fenster wieder in eine Gitterformation bringen?

12

Wenn ich Fenster in vier Quadranten angeordnet habe, wie aus der folgenden Folge von Befehlen:

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

Wenn Sie dann einen Befehl wie <C-W>Jeingeben, sind diese nicht mehr quadratisch. In diesem Fall wird ein Fenster dazu gezwungen, unten zu schweben.

Wie kann ich das Gegenteil tun - das heißt, die Fenster wieder in eine quadratische Formation zwingen?

Ich habe gelesen :help window-moving, aber nichts Nützliches gesehen.

wchargin
quelle
1
Ich bin ein bisschen unklar, was Sie erreichen möchten, wenn Sie <CW> J drücken, wodurch "das aktuelle Fenster unter Verwendung der gesamten Bildschirmbreite ganz unten angezeigt wird". Dies bedeutet, dass die Fenster angezeigt werden per definitionem nicht mehr in einer Gitterformation sein. Was versuchst du eigentlich mit deinen Fenstern zu machen?
Rich
3
@Rich Ich denke, OP ist nur ein Beispiel für eine Situation, nach der er die Fenster auf Gitterbildung zurücksetzen möchte.
Gonçalo Ribeiro
@ GonçaloRibeiro Richtig.
Wchargin
Obwohl dies keine Antwort ist, empfehle ich Ihnen , das fabelhafte Microviche- Projekt zu prüfen, wenn Sie nach Codebeispielen suchen, um Ihre eigene Lösung zu erstellen .
New Alexandria

Antworten:

4

Soweit ich weiß, gibt es keine einfache Möglichkeit, offene Splits in einem Raster von Splits anzuordnen. In diesem Fall ist es am einfachsten, die Struktur manuell zu korrigieren, um wieder in ein Raster zu gelangen:

  1. Schließe den oben schwebenden Spalt
  2. kehren Sie zum Split zurück und nehmen Sie die Hälfte des Bildschirms ein
  3. teilen Sie es mit :split <file>

Dadurch kehren Sie zu einem Raster zurück. Die Möglichkeit, Teilungen zu manövrieren, ohne das Fensterlayout zu beeinflussen, besteht in der Verwendung von [count] Ctrl - W x , wodurch das aktuelle Fenster mit dem [count] -Fenster ausgetauscht wird.

Davidlowryduda
quelle
Ich weiß, dass ich das kann, aber es gibt ein paar Nachteile. (1) Wenn das Fenster die einzige Ansicht eines bestimmten Puffers ist und der Puffer verschmutzt ist, müssen Sie :wqoder :q!, was nicht wünschenswert ist. (2) Dadurch werden alle fensterspezifischen Einstellungen wie die Cursorposition zurückgesetzt. (3) Dadurch werden alle in Bearbeitung befindlichen Unterschiede aufgehoben. Im Wesentlichen sind Fenster erstklassige Bürger; Sie zu zerstören und neue zu erschaffen, reicht einfach nicht aus.
Wchargin
@WChargin Einiges davon geht verloren, wenn Sie vim so einstellen, dass verborgene Puffer zugelassen werden. Aber ja ...
derobert
2
Anstatt das Fenster zu schließen und den Puffer an der gewünschten Stelle zu teilen, teilen Sie ein neues Fenster an der gewünschten Stelle, tauschen Sie es mit dem Fenster aus, das Sie verschieben möchten, und schließen Sie dann das (verschobene) neue Fenster.
tommcdo
4

Sie können Ihr Lieblingslayout mit dem winsaveviewBefehl speichern . Hier ordne ich es der \svEinfachheit halber zu:

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

Stellen Sie sicher, dass Sie das ausführen, bevor Sie Ihr Layout brechen! ;-)

Wenn Sie Ihr Layout einmal versehentlich beschädigen, können Sie es wiederherstellen:

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

Die Standardtasten zum Neuanordnen von Fenstern funktionieren nur innerhalb ihrer lokalen Teilungsgruppe:

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

Oder sie brechen das Fenster zur obersten Gruppe aus:

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

Diese sind nicht ausreichend, wenn Sie den Puffer in eine der anderen aufgeteilten Gruppen verschieben möchten.

In solchen Fällen kann das WindowSwap-Plugin jedoch Abhilfe schaffen . Sie können damit die Puffer von zwei beliebigen Fenstern austauschen.

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

<leader> pw   "Paste window": Swap the current window with the yanked window
joeytwiddle
quelle