2008-09-27 6 views
29

Mögliche Duplizieren:
Emacs, switch to previous windowIn Emacs, was ist die umgekehrte Funktion von anderen-Fenster (C-x o)?

other-window geht mich zum nächsten Fenster im aktuellen Rahmen, aber ich will auch einen Weg zurück zum vorherigen Fenster bewegen.

Emacs hat next-buffer und previous-buffer, aber keine analogen interaktiven Funktionen für die Fensternavigation. Nur other-window.

+0

HINWEIS: 'frame' und' window' sind verschiedene Bestien in der Emacs-Terminologie. Bitte ersetzen Sie 'frame' durch' window' in Ihrer Frage, um Verwirrung zu vermeiden. – jfs

+0

Frame/Fenster Verwirrung behoben. – phils

Antwort

32

ein negatives Argument mit Cu Stellen - ("Strg + U" und dann "minus") oder sogar mehr einfach C-- ("Control Minus").

  • Zum vorherigen Fenster: C-- Cx o
  • Zum vorherigen Rahmen: C-- Cx 5 o

Von Code, (other-window -1) oder (other-frame -1) wird das gleiche tun Ding.

Schauen Sie sich die Hilfe für den Schlüssel, den Sie stornieren möchten (zB Ch k Cx o für Cx Hilfe zu zeigen, o), und wenn sie sagt: „Ein negatives Argument ...“ Sie wissen, dass Sie verwenden können C -.

+0

Ein bisschen seltsam aber wenn ich ein Layout habe 2x3 Fenster mit Windows 1-6 mit 'Cx o' bewegt sich von 3 nach 4, aber in 4 mit' Cu - Cx o' bewegt sich von 4 nach 2. Was würde mich von 4 auf 3 bewegen? – Zitrax

9

Setzen Sie diese in Ihrem .emacs, und binden Sie es an einer beliebigen Tonart Sie

 
(defun back-window() 
    (interactive) 
    (other-window -1)) 
+2

byte-code: Falsche Anzahl der Argumente: (lambda nil (interaktiv) (anderes-Fenster -1)), 3 – lawlist

+0

@lawlist Ich habe den gleichen Fehler versucht, das gleiche wie oben zu tun, nur ich nannte meine Funktion "zurück -Fenster". Die Lösung bestand darin, den Namen der Funktion zu ändern, weil sie mit einigen internen Emacs-Definitionen zu kollidieren schien. Könnte Ihrem Fall auch helfen. Siehe hier: http://stackoverflow.com/questions/33266109/emacs-defining-function-calling-other-window-with-an-argument-doesnt-work/33266299#33266299 – Colin

+0

@Colin - Es gibt bereits eine gebaut -in Funktion mit dem Namen 'previous-window', so dass Sie ** nicht ** Ihre eigenen mit demselben Namen erstellen möchten - wählen Sie stattdessen einen anderen Namen. Ich kann mich nicht an die Umstände erinnern, die meinen Versuch, diese Antwort zu verwenden, kennen, aber ich sehe vom Datum (5. Mai 2013), dass ich wahrscheinlich ziemlich neu für Emacs war und gerade lernte, wie man durch Windows navigiert. Auf der Grundlage meiner derzeitigen Emacs-Fähigkeiten sehe ich nichts falsches mit dem Code - es gibt keine eingebaute Funktion namens "Back-Window" im neuesten Entwicklungsstamm/-stamm, die einen Konflikt usw. verursachen würde. – lawlist

5

Anders als Sie gefragt haben, aber the windmove package können Sie zwischen den Fenstern entsprechend ihrer relativen Bildschirmpositionen bewegen, was viel einfacher sein kann als wiederholt C-x o.

1

Anstelle von C-u - können Sie auch ein negatives Präfix-Argument mit nur M-- (Meta-Minus) angeben, d. H. Mit M-- C-x o zum vorherigen Fenster wechseln.

16

Dies ist ein alter Beitrag, aber ich habe mich gerade gefragt. Es scheint, dass es jetzt eine Funktion dafür in Emacs gibt: previous-multiframe-window.

Ich habe es an C-x O gebunden, wie in Großbuchstaben o. Jetzt werfe ich einfach in Schicht, wenn ich rückwärts gehen will.

(global-set-key (kbd "C-x O") 'previous-multiframe-window)

+1

Ein Problem damit ist, dass wenn Sie mehrere Frames haben, dies zwischen ihnen alle, wenn Sie nur innerhalb des aktuellen Frames bleiben wollen. – Malvineous

6

Eine etwas weniger ärgerlich Verknüpfung standardmäßig verfügbar ist C-- C-x o. Auf diese Weise müssen Sie während der Eingabe der Präfixe nicht zwischen Meta und Control wechseln.