Wie vervollständige ich Dateipfade in Emacs?

9688
Jason Baker

Angenommen, ich bearbeite eine Konfigurationsdatei und möchte einen Pfad eingeben. Gibt es ein Plugin für Emacs, mit dem Sie einen Dateipfad in diesem Puffer vervollständigen können? Ich habe danach gesucht und es gibt wie eine Bazillion Completion Plugins da draußen.

13
Ich bin nicht klar, was Sie hier fragen. Moderne Emacen haben den Pfadabschluss im Mini-Puffer (wenn Sie zum Beispiel `find-file 'verwenden). Möchten Sie ein ähnliches Verhalten in einem Inhaltspuffer? dmckee vor 14 Jahren 1
@dmckee - Ja, genau das suche ich. Jason Baker vor 14 Jahren 1
@dmckee Ist dieses Betriebssystem spezifisch? Ich hatte den Dateinamen in "Find File" in Ubuntu vervollständigt, aber in OSX gibt es keinen Abschluss. Zum Beispiel habe ich eine Datei namens "reference" in root und bin im Mini-Puffer: "find file: ~ /" und gebe "ref" ein. Muss ich etwas installieren? Zeynel vor 10 Jahren 0
@Zeynel Für Mac OS auch gut geeignet. Entweder mit der von Apple installierten Version oder der Homebrew-Version. Funktionierte auch mit der Fink-Version auf meinem älteren Rechner. dmckee vor 10 Jahren 0
@dmckee seltsam. Vielleicht stelle ich eine neue Frage. Vielen Dank. Zeynel vor 10 Jahren 0

5 Antworten auf die Frage

13
Teddy

Normalerweise tippe ich Ctrl- X Ctrl- Fals würde ich eine Datei öffnen, aber anstatt zu drücken, RETdrücke ich Ctrl- A Ctrl- K Ctrl-, Gum den Pfad zu kopieren und dann in den Puffer einzufügen, den ich mit Ctrl- bearbeitet habe Y.

Ich brauche das nicht oft genug, aber wenn ich wirklich eine bessere Lösung wollte, würde ich definitiv die Lösung von Trey Jackson verwenden hippie-expand. Ich überlegte mir, wie es hippie-expandvielleicht ein besserer Weg wäre, dies zu tun, wenn ich das erste Mal antwortete, aber ich wusste es nicht und war zu faul, um nachzuschauen, also schrieb ich einfach, was ich tue.

Klobig und unelegant, aber funktionierend. Ich muss zugeben, dass ich dies gelegentlich selbst mache. Ich bin immer noch an einer saubereren Lösung interessiert ... dmckee vor 14 Jahren 0
Tatsächlich. Es scheint nicht viel weniger Arbeit zu sein, als wenn Sie es manuell eingeben. Jason Baker vor 14 Jahren 0
@ Jason Baker: Es hängt davon ab, ob Sie den genauen Dateinamen kennen oder ob Sie ein wenig erforschen müssen. Teddy vor 14 Jahren 1
9
Trey Jackson

Versuchen Sie Hippie zu erweitern, das als eine seiner Möglichkeiten hat " try-complete-file-name. Sie können die Reihenfolge und Liste der Erweiterungsfunktionen ändern, die hippie expand verwendet, um den Dateinamen zu erweitern.

Oder Sie schreiben sogar einen benutzerdefinierten Wrapper, der nur die Dateinamenerweiterung übernimmt. So etwas wie:

(global-set-key (kbd "C-M-/") 'my-expand-file-name-at-point) (defun my-expand-file-name-at-point () "Use hippie-expand to expand the filename" (interactive) (let ((hippie-expand-try-functions-list '(try-complete-file-name-partially try-complete-file-name))) (call-interactively 'hippie-expand))) 
2
Ron Kaminsky

Die Vanille, aus der Box

M-x comint-dynamic-complete-filename 

arbeitet außerhalb des Comint-Modus. Natürlich können Sie die Minipuffer dynamische Expansion verwenden weniger Tastenanschläge zu verwenden, um es (zB Mx zu erhalten Comi nt- dy namic- c omplete -f ilename). Wenn Sie es häufig verwenden, können Sie es mit einer Tastenfolge Ihrer Wahl binden global-set-key.

1
fikovnik

Es ist auch möglich, die automatische Autovervollständigung der Firma auszuführen, wenn sie company-filesin der Liste von company-backends(Standard in meiner Installation) oder explizit durch Aufrufen enthalten ist company-files.

0
Arnaud Meuret

Ich habe kürzlich die Arbeiten von Tomohiro Matsuyama (@ m2ym) entdeckt und war sehr beeindruckt von der Qualität seiner Emacs-Pakete.

Ich habe mit den meisten Auto-Completion-Erweiterungen zu kämpfen gehabt und festgestellt, dass sie alle große Mängel aufweisen.

Schauen Sie sich Tomos Autovervollständigung ( http://auto-complete.org/doc/manual.html ) an. Die Installation war sehr einfach (ich bin unter Linux) und deckt viele Anforderungen an die automatische Vervollständigung auf moderne Weise ab.

Natürlich ist Ihre Anfrage nach der Vervollständigung der Dateinamen in Pufferdaten perfekt abgedeckt.

Wenn Sie auch Ruby ausführen, verpassen Sie nicht die RSense- Erweiterung. wieder das beste seiner art.

Die Verbindung ist unterbrochen xuhdev vor 9 Jahren 0
Und hier ist der neue Link: https://github.com/auto-complete/auto-complete/blob/master/doc/manual.md Krab vor 5 Jahren 0