2013-08-06 12 views
5

Wenn ich Tab-Complete in einem Minibuffer und Emacs eine Completion-Liste in einem neuen Puffer anzeigt, wie kann ich zu diesem Puffer wechseln, ohne die Maus zu verwenden?In Emacs, wie wähle ich die Abschlussliste mit der Tastatur?

Ich versuchte C-x o, aber das nur auf den ersten Puffer, von denen ich den Minipuffer eingegeben.

Ich versuchte auch C-x b, aber das gibt mir command attempted to use minibuffer while in minibuffer.

Schließlich versuchte ich C-x <C-right>, die mir cannot switch buffers in minibuffer window gibt.

EDIT: Ich sprach über die Minibuffer-Vervollständigung in meinem Beispiel, aber es ist mir auch wichtig, auf die Vervollständigungsliste (mit der Tastatur) innerhalb eines regulären Puffers zuzugreifen und nicht zu funktionieren. Die M-v Verknüpfung wurde vorgeschlagen, aber es scheint nur innerhalb der Minibuffer zu funktionieren, auf die von M-x zugegriffen wird, in jedem anderen Puffer habe ich versucht, M-v ist an scroll down command gebunden und schaltet nicht auf die Abschlussliste. Ich scheine nicht einmal in anderen Minibuchsen zu arbeiten. Zum Beispiel funktioniert es nicht in dem Shell-Befehl minibuffer, der entweder von M-! aufgerufen wird.

+0

Siehe meinen Vorschlag in der Bearbeitung meiner Antwort unten. –

Antwort

2

Sie können C-xo zweimal verwenden oder M--C-xo, die anstelle des nächsten zu dem vorherigen Pufferschalter verwenden.

+0

'C-x o' funktioniert zweimal nicht, da der erste Befehl die Vervollständigungsliste schließt. Das Anwenden eines negativen Arguments auf den Pufferwechselbefehl funktioniert jedoch gut. Ich würde 'C-C-xo' allerdings verwenden. Außerdem fügt es den Cursor nicht bei der ersten Vervollständigung ein, sondern den Anfang des Puffers, der saugt, weil ich mich dann ganz nach unten bewegen muss. Ist das wirklich, wie Menschen die Fertigstellung nutzen? – bug

+1

Bug: Nein, ich vermute, dass sehr wenige Leute tatsächlich direkt mit dem Completion-Puffer interagieren. Der normale Ansatz besteht einfach darin, die Optionen weiter zu filtern, indem "TAB" in den Minipuffer eingegeben wird, bis ein eindeutiges Ergebnis erhalten wird, wobei der Vervollständigungspuffer nur als visuelle Referenz dient. – phils

8

Sie können mit Mv (here dokumentiert), die an den Abschluss-Puffer-Schalter und setzt den Cursor auf den ersten Abschluss:

Mv Tippen, während in der Minipuffer, um das Fenster auswählt, zeigt die Abschluss Liste (Wechsel zum Abschluss). Dies ebnet den Weg für die Verwendung der folgenden Befehle . <PageUp> oder <prior> macht das gleiche. Sie können auch das Fenster auf andere Weise wählen ...

EDIT: Es sieht aus wie auf die ursprüngliche Frage auf der Grundlage Ihrer bearbeiten, dass, was Sie fragen für einen Weg, um den Fertigstellungen zu wechseln ist mehr Puffer global . Es gibt eine Funktion switch-to-completions, die die Fertig Liste auswählt - man bedenkt, könnte diese Funktion auf einen Schlüssel Ihrer Wahl zu binden, zB:

(define-key global-map (kbd "C-x t") 'switch-to-completions) 

Zum Beispiel eine solche Bindung mich Beendigungen von „Shell-Befehl umschalten können: "aufgerufen von M-! und setzt den Cursor auf den ersten möglichen Abschluss.

+0

Weirly genug, das scheint nicht für mich zu arbeiten. (Ich benutze Emacs v24.2.1 btw.) Wenn ich 'M-v' im Minibuffer drücke, sagt es nur' Anfang des Puffers' und wählt nicht die Vervollständigungsliste aus. – bug

+0

ungerade. Was ist mit dem Drücken von 'PageUp' - das sollte auch funktionieren (auf meinem Mac ist das' fn-Up'). Sie könnten versuchen, Emacs neu zu starten, ohne Ihre Initialisierungsdatei zu lesen, zB 'emacs -q' –

+0

Sie können' M-v' an eine andere Funktion gebunden haben. –