Szenario: Ich habe mehrere (mehr als 2) Fenster geöffnet. Ich arbeite aktiv mit zwei von ihnen. Wie springe ich am besten mit einem Befehl von einem Fenster zum anderen und zurück ?
Ich benutze Ass-Fenster; Es ist großartig, aber ich möchte nicht jedes Mal die Fensternummer drücken. Ich weiß über next-window
/ Bescheid prev-window
, aber das sind zwei verschiedene Befehle.
Was ich suche, ist etwas, das sich daran erinnert, was die vorherigen Fenster waren, als ich ein anderes Fenster auswählte, und darauf zurückkommt. Wird es wiederholt aufgerufen, wechselt es zwischen den letzten beiden Fenstern im Alt- Tab-Stil.
Wo schaue ich
fn
plus eine der Pfeiltasten, um in eine beliebige Richtung zu gehen, einschließlich in und aus dem Minibuffer (falls er aktiv ist) - siehe die eingebaute Bibliothekwindmove
.Antworten:
Eine Möglichkeit, einen eigenen Befehl zu schreiben, besteht darin, die integrierte
get-mru-window
Funktion zu verwenden.Zum Beispiel:
Dies sucht nach dem zuletzt verwendeten Fenster im aktuellen Frame, das nicht das aktuell ausgewählte Fenster ist.
Hier ist eine Variation, die über sichtbare Frames hinweg funktioniert:
Wie in den Kommentaren erwähnt, ist hier eine Variante, die funktioniert, wenn nur ein Fenster vorhanden ist (Umschalten auf den neuesten Puffer):
quelle
get-mru-window
.mode-line-other-buffer
. Auf diese Weise habe ich einen Schlüssel, der in jeder Fensterkonfiguration zwischen zwei Puffern hin und her wechselt.Wenn Sie bereits verwenden
ace-window
, können Sie mit dem Befehlaw-flip-window
zwischen zwei Fenstern hin und her blättern. Standardmäßig ist diesn
im Ass-Fenster gebundenaw-dispatch-alist
.Das bedeutet, dass Sie das Ass-Fenster aufrufen und
n
anstelle einer Fensternummer drücken können, um zum vorherigen Fenster zurückzukehren. Sie können auchaw-flip-window
an einen anderen Schlüssel binden .Beachten Sie, dass dies nur zu einem Fenster zurückkehrt, das zuvor von ace-window ausgewählt wurde. Wenn Sie häufig mit anderen Befehlen zwischen Fenstern wechseln, möchten Sie möglicherweise eine allgemeinere Lösung.
quelle
Hier ist ein einfacher, leicht getesteter Befehl, mit dem Sie zum zuletzt besuchten Fenster wechseln:
quelle
next-window
oder zu anderen Fenstern wechselnother-window
, wird die Änderung nicht in derrecent-window
Variablen übernommen. Es gibt keinen offensichtlichen Haken, der verwendet werden muss. Um diesen Teil zu reparieren, müssen möglicherweise Ratschläge für eine ganze Reihe anderer Funktionen definiert werden.buffer-list-update-hook
, was aufgerufen wird, wenn sich das aktive Fenster ändert (nachselect-window
). Dieser Hook wird in anderen Fällen aufgerufen, kann jedoch verwendet werden, um das letzte Fenster zu verfolgen.