Der eingebaute Weg, dies zu tun, ist mit Registern.
Zum Beispiel C-xrwazum Speichern der aktuellen Fensterkonfiguration zum Registrieren von a.
Dann können Sie die eingebaute Bindung C-x1zum Ausführen verwendendelete-other-windows
Nachdem Sie die einzelne Datei angesehen haben, kehren Sie mit C-xrjazu der gespeicherten Fensterkonfiguration in Register a zurück.
Zusamenfassend:
C-xrwa (Konfiguration im Register speichern)
C-x1 (andere Fenster löschen)
C-xrja (gespeicherte Fensterkonfiguration erneut anwenden)
Ich finde Register jedoch unhandlich. Ich verwende einen benutzerdefinierten Fenster-Konfigurationsstapel, um meine Konfigurationen zu verwalten.
Ich habe zwei Bindungen, die die aktuelle Konfiguration auf den Stapel schieben und die oberste Konfiguration einfügen und anwenden.
In Ihrem Szenario würde ich also zuerst meine Push-Bindung, dann Cx 1 und dann meine Pop-Bindung ausführen.
Hier ist der Code:
(defvar winstack-stack '()
"A Stack holding window configurations.
Use `winstack-push' and
`winstack-pop' to modify it.")
(defun winstack-push()
"Push the current window configuration onto `winstack-stack'."
(interactive)
(if (and (window-configuration-p (first winstack-stack))
(compare-window-configurations (first winstack-stack) (current-window-configuration)))
(message "Current config already pushed")
(progn (push (current-window-configuration) winstack-stack)
(message (concat "pushed " (number-to-string
(length (window-list (selected-frame)))) " frame config")))))
(defun winstack-pop()
"Pop the last window configuration off `winstack-stack' and apply it."
(interactive)
(if (first winstack-stack)
(progn (set-window-configuration (pop winstack-stack))
(message "popped"))
(message "End of window stack")))
Anschließend können Sie binden winstack-push
an so etwas wie C-cC-u, und winstack-pop
zu C-cC-oleicht zu springen herum.
Ich benutze
winner-mode
. Hier ist mein Setup:Ich weiß nicht, ob es eine Möglichkeit gibt, ein Layout oder etwas mit einem Lesezeichen zu versehen, aber es reicht mir aus, ständig zum vorherigen Layout zurückzuschalten.
quelle
Emacs bietet Register zum Speichern und Anwenden von Daten wie Ihrer aktuellen Fensterkonfiguration. Dies kann mit
C-x r w
und erfolgenC-x r j
. Dieser Ansatz wird jedoch unhandlich, da Sie sich die Fensterregister merken müssen.Es gibt einige Pakete, um dies zu verbessern. iregister macht diese grundlegende Funktion inspizierbarer und interaktiver. Die anderen, von denen ich weiß, dass sie die Register nicht beeinflussen, wie z. B. elscreen und escreen, die die Kopfleiste zum Anzeigen von Registerkarten verwenden. Arbeitsgruppen und Arbeitsgruppen2 sind zwei neuere und umfassendere Ansätze für dieses Problem. Ich persönlich mochte auch nicht und schrieb daher meine eigene , die irgendwo dazwischen liegt und hoffentlich weniger Bugs und Komplexität hat.
quelle
(window-configuration-to-register "1")
als Befehl in meinen .emacs versucht , aber es hat nicht funktioniertSie können das aktuelle Fensterlayout in einem Register speichern und es dann mit wiederherstellen
jump-to-register
. Der Befehlwindow-configuration-to-register
istC-x r w
standardmäßig an gebunden .Wenn Sie Ihre Fenster beispielsweise auf nützliche Weise angeordnet haben, können Sie sie speichern, um sie erneut zu registrieren.
i
Verwenden Sie dazu:C-x r w i
und stellen Sie das Layout später mit wieder herC-x r j i
.quelle
Zygospore bietet eine schnelle Lösung für den Fall, dass Sie mehrere Fenster geöffnet haben und eines davon vorübergehend maximieren möchten. Es ändert das Verhalten von
C-x 1
. Wenn Sie mehrere Fenster geöffnet haben, verhält es sich wie die Standardeinstellungdelete-other-windows
und entfernt alle Fenster mit Ausnahme des Fensters, das Sie gerade anzeigen. Wenn Sie erneut darauf klicken, werden die anderen Fenster wiederhergestellt.Der Gewinner-Modus bietet eine allgemeinere Lösung, aber Zygospore eignet sich hervorragend zum vorübergehenden Vergrößern eines einzelnen Fensters in einem Frame. Das Beste ist, dass keine neuen Tastenkombinationen verwendet werden. Sie werden
C-x 1
auf sehr intuitive Weise neu definiert , sodass keine neuen Tastenkombinationen zu lernen sind.quelle
Das ist eine interessante Frage. Vor einigen Jahren habe ich alle Lösungen untersucht. Nur workgroups2.el ist schwer genug, um alle Eckkoffer abzudecken.
Die Benutzeroberfläche von Workgroups2 ist jedoch eine Katastrophe. Wenn Sie beispielsweise den Arbeitsgruppenmodus aktivieren (wie in der README-Datei vorgeschlagen), wird das vorherige Layout beim Start von Emacs automatisch geladen. Das macht das Starten JEDES Mal extrem langsam.
Meine Lösung besteht darin, workgroups2 als eine Sammlung von APIs zu behandeln, anstatt als ein sofort einsetzbares Tool. Daher ändere ich die standardmäßige Benutzeroberflächeninteraktion mithilfe des Efeu-Modus ( https://github.com/abo-abo/swiper ) von @ abo-abo
Das Umschalten des gesamten Fensters ist einfach, es reicht aus, APIs aus dem Winner-Modus zu verwenden.
Hier ist der vollständige Code (ich benutze nur
M-x toggle-full-window
,M-x wg-create-workgroup
undM-x my-wg-switch-workgroup
Sie müssen auch Swiper installieren, wie ich oben erwähnt habe),quelle