Gelegentlich beginne ich, eine Datei zu öffnen, und bevor ich die Datei aus irgendeinem Grund auswähle, führe ich sie aus, C-x obevor ich auf die Eingabeaufforderung antworte. Jedes Mal, wenn ich versuche, es find-file
erneut auszuführen , beschwert es sich über Command, das versucht hat, Minibuffer zu verwenden, während es sich im Minibuffer befindet . Wenn ich jedoch einen Befehl wie isearch-forward-regexp
(auch wenn bereits in einer find-file
Eingabeaufforderung) verwendet werde, wird der Fehler nicht ausgelöst und ich kann nicht mit zum Minibuffer zurückkehren other-window
.
Warum aktualisieren einige Eingabeaufforderungen den Minibuffer vorübergehend, sodass other-window
der Minibuffer als mögliches Ziel betrachtet wird, andere nicht?
Nur zur Klarstellung, ich frage nicht, wie ich mich lösen soll.
Ursprünglich, als ich darauf stieß, wechselte ich zum Minibuffer und tat Esc Esc Escoder C-gum der Eingabeaufforderung zu entkommen, damit ich einen neuen Befehl initiieren konnte, der den Minibuffer verwendet. Beim Nachdenken über diese Frage wurde mir jedoch klar, dass abort-recursive-edit
( C-]) diesen laufenden Minibuffer schließen wird, ohne other-window
+ tun zu müssen keyboard-quit
.
Trotzdem bin ich mir nicht ganz sicher, wofür der ursprüngliche Anwendungsfall ist. Vielleicht soll es beim Einfügen von Kopien in eine Minibuffer-Eingabeaufforderung helfen oder beim Ausführen eines Befehls mitten in einem Makro helfen?
Was ich tun möchte , ist wissen , ob es einen Weg gibt , dieses Rekursivität, wie es mit zu deaktivieren isearch
. Ist isearch
sicher, weil es ein Leseereignis anstelle einer blockierenden Eingabeaufforderung verwendet? Gibt es einen Hook, der abort-recursive-edit
beim Verlassen des Minibuffers ausgelöst werden muss?
TL; DR
- Warum aktualisieren einige Minibuffer-Befehle den Minibuffer auf ein Ziel für
other-window
und blockieren die Ausführung neuer Minibuffer-Befehle, während andere, zisearch
. - Gibt es eine Möglichkeit, dies zu deaktivieren?
- Was ist der beabsichtigte Anwendungsfall dieser Funktion?
quelle
C-]
bricht eine Ebene des Minibuffers ab, ja. Isearch verwendet den Minibuffer nicht. Und was hat " in prompt stecken " mit dem Rest von dem zu tun, was Sie beschreiben? Sie solltenswitch-window
in solchen Kontexten überhaupt nicht verwenden müssen . Aber es ist nicht klar, was Sie versuchen zu tun. Versuchen Sie, die verschiedenen Teile Ihrer Beschreibung zu trennen, und versuchen Sie, eine einzige Frage zu stellen.enable-recursive-minibuffers
umt
zu vermeiden, dass der Befehl versucht, den Minibuffer in der Minibuffer- Nachricht zu verwenden. Es kann hilfreich sein, die ursprüngliche Frage zu klären, wenn Sie die Fragerecursive-edit
separat veröffentlicht haben.Antworten:
find-file
ist ein solcher Befehl. Das Lesen der Minibuffer-Eingabe "aktiviert" das Minibuffer-Fenster, weshalb Sie mit demother-window
Befehl dorthin wechseln können . Interaktivisearch
ist etwas Besonderes, da es als Nebenmodus implementiert ist. Es liest Ihre Suchzeichenfolge technisch nicht aus dem Minipuffer, sondern fängt Ihre Tastendrücke während der Eingabe ab und gibt sie mit an den Minipuffer weitermessage
. Deshalb sehen Sie einother-window
anderes Verhalten.find-file
indem Sie die in gespeicherte Funktion ändernread-file-name-function
. Ich habe nicht versucht, die Funktion basierend auf der Antwort von @ kaushalmodi zu empfehlen, aber wenn das funktioniert, werde ich dies aktualisieren.quelle
Das folgende Snippet [ Quelle ] bricht die rekursive Bearbeitung ab, wenn sich der Fokus vom Minibuffer entfernt. Dies dient dazu, irritierende Situationen zu vermeiden, in denen durch wiederholtes
C-g
Drücken der Minipuffer nicht bearbeitet wird, da sich der Cursorfokus herausbewegt hat.quelle
Drew hat dies bereits kommentiert, aber ...
isearch
1 eigentlich nicht die Minipuffer verwenden, die wahrscheinlich für einen Teil Ihrer Verwirrung ausmacht. Es werden Dinge im Echo-Bereich angezeigt (der sich im selben Fenster wie der Minibuffer befindet, aber nicht der Minibuffer ist).In diesem Fall macht der Gedanke, während einer Isearch zum und vom Minibuffer zu wechseln, keinen Sinn.
1 Ignorieren Befehle wie
isearch-edit-string
die zu tun , die Minipuffer verwenden, sind aber nicht Teil der grundlegendsten isearch Workflow.quelle