Frage

Es scheint viele alternative Emacs Auto-Vervollständigung Mechanismen zu sein. Ohne eine erschöpfende Suche, kommen die folgenden in dem Sinne: ido, auto-complete, Eiszapfen, in Puffer Abschluss, Minipuffer Fertigstellung und Standard aus dem Kasten heraus Abschluss. Und dann gibt es Code-Vervollständigung. Viel davon. Und viel davon sprachabhängig. Es wäre sehr nützlich sein, einen Emacs-Guru zu haben, oder drei, sowohl die Vorteile der wichtigsten Akteure in Code und nicht-Code Auto-Vervollständigung zusammenfassen. Und diese Stack-Überlauf ist, ist es selbstverständlich, dass es gut wäre, die Auto-Vervollständigung Modi zu identifizieren, dass die Arbeit am besten für Emacs IDE-Ähnliche Mechanismen.

Aktualisieren : Ich habe gerade entdeckt rel="noreferrer"> die verstärkt meine grundlegende Frage: all diese Entscheidungen, was gut ist, was ist weniger gut und wenn man nur mit 2-3 spielen könnte, welche würden Sie empfehlen

War es hilfreich?

Lösung

I zwei im Allgemeinen verwendet Abschluss Pakete (andere als die in integrierten Tabulatorvervollständigung im Minipuffer und comint Puffern).

pabbrev.el - die an der Cursorposition einen Vorschlag liefert (drücken Sie TAB ) zu akzeptieren. Die Entscheidungen werden durch einen Blick auf Wortfrequenz gemacht. Ich mag das, weil der visuellen Hinweis darauf, was würde abgeschlossen -. Aber es funktioniert meistens nur für einen Abschluss

Hippie-expand - das ist im allgemeinen gebunden M - / anstelle von dabbrev weil es alles tut, dass dabbrev tut und mehr. Das funktioniert gut, wenn Sie, um durch einige Alternativen benötigen könnten, oder wenn Sie einen Dateinamen oder etwas anderes vervollständigen wollen.

Ich mag beide, weil sie benötigen keine Mausbewegungen und Arbeit schnell.

Andere Tipps

Icicles -

Für den größten Teil ist Icicles über Minipuffer Fertigstellung. Es gibt ein paar Fälle, in denen es etwas für in-Puffer (zum Beispiel Code) Abschluss bietet, aber es ist in erster Linie um Minipuffer Abschluss.

Wenn die meisten Leute über Minipuffer Abschluss denken, denken sie von file-name Abschluss, Puffer-Namen Abschluss und Befehlsname Fertigstellung. Aber es gibt ein Los mehr zu bieten.

Als Emacs-Lisp-Programmierer können Sie Abschluss verwenden, wo immer sich die Benutzer interaktiv eine Wahl zu geben. Das ist ziemlich allgemein!

Die Fertigstellung ist wirklich über Pattern-Matching-Sets zu definieren , die Sie anschließend manipulieren.

Die meisten Leute denken, dass der einzige von Minipuffer Fertigstellung Ziel ist es, einen einzigen Namen zu wählen (Datei, Puffer, Befehl, Variable, ...). Aber die Macht der Fertigstellung ist wirklich Filter und möglicherweise Art des vollständigen Satz von Dateinamen, Namen Puffer usw. in unterschiedlicher Weise, und dann Benutzer etwas tun zu lassen oder mit dem resultierenden Satz (nicht notwendigerweise ein einzelnes Objekt).

Das ist, was Icicles ist etwa:. Lassen Sie dynamisch (inkrementell) definieren Baugruppen mit der Pattern-Matching und dann auf ausgewählte Mitglieder handeln oder alle Mitglieder dieser Sätze

Dies ist nicht so sehr das Ziel von Ido oder den anderen Abschluss-Paketen, mit der möglichen Ausnahme von Helm (Alles) .

Im Gegensatz zu Helm (Alles) , welche Privilegien Objekt Namen über Objekttypen und Aktionen als Ausgangspunkt, in Icicles Sie in der Regel invoke ein Befehl, etwas zu tun zu einem oder mehreren Objekten eines bestimmten Typ ( zB Puffer) und und Sie die Menge dieser Objekte verengen, in der Regel durch Namen-Matching. Es ist oft der Fall in Icicles , dass Sie für diese Objekte in mehreren, aber verwandten Arten innerhalb des gleichen Befehls handeln können.

In Helm (Alles) in der Regel Ihre Eingabe ist angepasst zuerst von Objektnamen gegen das gesamte Universum von Objekten aller Art, und danach verengen Sie nach unten zu holen einige Operation (en) durchzuführen.

Schließlich beachten Sie, dass jede der verschiedenen Fertigstellung nähert bietet sowohl etwas (zum Beispiel Befehle) für Endbenutzer und etwas (zum Beispiel Abschluss Features) für Programmierer.

Wenn Sie tun, Code-Vervollständigung dann in der Regel mögen Sie gerade vervollständigt die Namen am Punkt . Die Hauptsache ist interessant, über Code-Vervollständigung ist die Bestimmung, was die geeigneten Kandidaten. Dafür ist die textliche (zum Beispiel Code) Kontext typischerweise alle wichtigen. Bieten Bedürfnisse intelligente Entscheidungen, die Vervollständigungsfunktion den Kontext (Code), einschließlich der umfassenden Kontext (z Projektcode).

analysieren

Minipuffer Abschluss auf der anderen Seite kann für jede Art der Wahl und Maßnahmen verwendet werden, einschließlich Multiple-Choice mit mehreren Aktionen. Hier sind alle Teile interessant. Was Kandidaten zu bieten, was man mit ihnen machen kann, etc

Keine Ahnung, ob das hilft, aber das ist mein nehmen sowieso.

Ich verwende Standard Tabulatorvervollständigung in dem Minipuffer für Dateinamen, M-x Befehle und andere Dinge.

Ich benutze auch häufig den M-/ Tastendruck (dabbrev-expand) zum dynamischen Abschluss eines Wortes in einem Ihrem Emacs-Puffer. Es ist fantastisch, vor allem für lange Variablennamen. Hier ist die Dokumentation:

M-/ runs the command dabbrev-expand, which is an interactive
autoloaded Lisp function in `dabbrev.el'.

It is bound to M-/.

(dabbrev-expand ARG)

Expand previous word "dynamically".

Expands to the most recent, preceding word for which this is a prefix.
If no suitable preceding word is found, words following point are
considered.  If still no suitable word is found, then look in the
buffers accepted by the function pointed out by variable
`dabbrev-friend-buffer-function'.

A positive prefix argument, N, says to take the Nth backward *distinct*
possibility.  A negative argument says search forward.

If the cursor has not moved from the end of the previous expansion and
no argument is given, replace the previously-made expansion
with the next possible expansion not yet tried.

The variable `dabbrev-backward-only' may be used to limit the
direction of search to backward if set non-nil.

See also `dabbrev-abbrev-char-regexp' and C-M-/.

Sie können schauen, um unternehmensModus oder die automatische Vervollständigung Paket, das unterschiedliche Abschluss Quellen nutzen könnten, einschließlich cedet, und sie ermöglichen auch neue Abschluss Quellen zu definieren ... Für einige Programmiersprachen können Sie cedet direkt ...

verwenden
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top