Wie Sie zu einem aktiven Minibuffer-Prompt in emacs ohne Maus zurückkehren

6072
Ryan Thompson

In emacs bin ich manchmal dabei, eine Datei zu finden, Puffer zu wechseln oder etwas im Minipuffer zu tun, und ich werde aus irgendeinem Grund irgendwo anders klicken. Wenn ich zurück gehe, kann ich die Minibuffer-Eingabeaufforderung nur wieder aktivieren, indem Sie in den Minibuffer klicken, was ärgerlich ist, da es sich um einen dünnen Bereich handelt. Gibt es eine Möglichkeit, zu einer aktiven Minibuffer-Eingabeaufforderung zurückzukehren, ohne die Maus zu verwenden?

37

4 Antworten auf die Frage

25
Trey Jackson

Das wird tun, was Sie wollen. Binden Sie an den Schlüssel Ihrer Wahl:

(defun switch-to-minibuffer-window () "switch to minibuffer window (if active)" (interactive) (when (active-minibuffer-window) (select-frame-set-input-focus (window-frame (active-minibuffer-window))) (select-window (active-minibuffer-window)))) (global-set-key (kbd "<f7>") 'switch-to-minibuffer-window) 
Wenn Sie über mehrere Frames verfügen, müssen Sie vor dem `Select-Fenster '(Select-Frame-Set-Input-Focus (Fenster-Frame (Aktiv-Minibuffer-Fenster)))` `hinzufügen. dshepherd vor 8 Jahren 2
@dshepherd Ich kann bestätigen, dass die angereicherte Funktion nach dem Einfügen Ihrer Elisp-Zeile auch mit nur einem Frame gut funktioniert. Vielen Dank. dimitarvp vor 8 Jahren 0
@dshepherd Danke, habe den Code entsprechend aktualisiert. Trey Jackson vor 8 Jahren 0
22
Richard Hoskins
C-x o 

Wiederholen Sie dies bei Bedarf.

Cx o führt den Befehl other-window aus, eine interaktive integrierte Funktion in "C-Quellcode".

Wenn Sie nicht durch Fenster blättern möchten, können Sie Ihrer init-Datei eine Funktion hinzufügen und diese an einen Schlüssel binden. So etwas könnte funktionieren:

(defun select-minibuffer () "Make the active minibuffer the selected window." (interactive) (when (active-minibuffer-window) (select-window (active-minibuffer-window)))) 
Warum sollten Sie "RET" so einfügen? Es würde automatisch akzeptieren, was sich im Minipuffer befand (vorausgesetzt, ein einzelner Cxo wechselt zum Minipuffer). Im Allgemeinen müssen Sie Cx o mehrmals verwenden, wenn (im Emacs-Sprachgebrauch) mehrere Fenster im Frame geöffnet sind (in normalen GUI-Begriffen: mehrere Fenster im Fenster). Chris Johnsen vor 14 Jahren 1
You're right. My bad. Richard Hoskins vor 14 Jahren 0
Gibt es eine Möglichkeit, direkt zum Minipuffer zu gelangen, ohne potenziell durch alle Fenster zu blättern? Soll ich nur eine Schleife schreiben, die ein anderes Fenster ausführt, bis das aktuelle Fenster ein Minipuffer ist? Ryan Thompson vor 14 Jahren 0
6
rsenna

Eine andere Option verwendet switch-window

Ich finde, es ist ein wirklich nützliches Paket: Es erlaubt Ihnen, schnell zu jedem Emacs-Fenster zu gelangen (und ich verwende in Emacs viele offene Fenster).

Aber ich finde nur heraus, dass Sie auch zum Minibuffer wechseln können, falls dieser aktiv ist:

enter image description here

Ich hoffe es hilft.

Ein verwandtes Paket ist ["Swap-Puffer"] (https://github.com/ekazakov/swap-buffers/blob/master/swap-buffers.el), das dieselbe Methode zum Austauschen des aktuellen Puffers mit einem anderen verwendet Fenster. pyrocrasty vor 8 Jahren 1
0
Cảnh Toàn Nguyễn
;; faster switching between windows in the same frame (windmove-default-keybindings) 

Das Hinzufügen von zwei obigen Codezeilen zu .emacs.el ermöglicht ein einfaches und effizientes Verschieben nicht nur in den Minibuffer, sondern auch das Navigieren in allen anderen Fenstern im Emacs-Rahmen mithilfe von Shift-Arrow .