Ich verwende ctags, taglist usw., um die automatische Vervollständigung in Vim zu erreichen. Es ist jedoch im Vergleich zu Visual Studio Intellisense oder Eclipse Auto-Completion sehr eingeschränkt. Ich frage mich, ob es möglich ist, Vim auf Folgendes abzustimmen:
Automatische Vervollständigung anzeigen, wann immer. oder -> eingegeben werden. Aber nur nach einem Text, der eine Variable sein könnte (z. B. vermeiden, die automatische Vervollständigung nach einer Zahl anzuzeigen).
Funktionsparameter anzeigen, wenn (eingegeben wird.
Beenden Sie das Entfernen der Liste der automatischen Vervollständigungen, wenn einige nachher alle Zeichen löschen. oder ->: Wenn ich einen Variablennamen eingebe, drücken Sie. oder -> um nach einem bestimmten Mitglied zu suchen, muss ich häufig alle Zeichen löschen, die ich nach dem eingebe. oder ->, aber dadurch versteckt Vim die Liste der automatischen Vervollständigungen. Ich möchte es sichtbar halten, wenn ich nicht Esc drücke.
Anzeigen der zugehörigen automatischen Vervollständigung: Wenn ich eine Variable eingebe und ^ X ^ O drücke, werden mir normalerweise alle Tags in der ctags-Datei angezeigt. Ich möchte, dass nur die Tags angezeigt werden, die sich auf die Variable beziehen.
Danke für die Hilfe.
EDIT : Einige Leute stimmen für diese Frage, aber niemand scheint die Antwort zu kennen. Ich wollte nur erwähnen, dass Sie keine vollständige Antwort geben müssen. Teilantworten auf einen der genannten Punkte wären auch gut.
quelle
Antworten:
AutoComplPop ist das, was Sie brauchen.
quelle
Denn (1) bei der Arbeit mit C ++ oder C
clang complete
ist eine wirklich schöne Optionquelle
Damit vim beim Drücken einer Taste ein bestimmtes Verhalten auslöst, müssen Sie die Taste einer Funktion zuordnen.
Um beispielsweise den Schlüssel zuzuordnen
.
, um imINSERT
Modus eine Art von Abschluss aufzurufen , müssten Sie Folgendes tun:und dann müsste die Funktion den Kontext auswerten, in dem sie aufgerufen wurde, und dem Benutzer eine geeignete Antwort präsentieren.
Bearbeiten : Dies ist die Grundlage dafür, wie
clang complete
von @honk erwähnt funktioniert.Ich bin mir nicht sicher, ob Sie das Verhalten von Omnifunc an Ihre Bedürfnisse anpassen können, aber meiner Erfahrung nach bin ich nie zu weit gegangen. Wie @Mikhail sagte, müssten Sie die Dinge im Auge behalten, was in der Praxis bedeutet, den Code bis zu einem gewissen Grad zu interpretieren oder sogar auszuführen.
quelle
Ich benutze vim jeden Tag und kenne kein vorhandenes Skript, das dies tun könnte. Diese Aktion würde das Verständnis der Klassen und das Verfolgen von Variablen erfordern.
someObject->
bedeutet, dass VIM weiß, um welche Klasse es sich bei der VariablensomeObject
handelt, und dann nach Methoden / Variablen innerhalb dieser Klasse suchen kann.Das Schreiben von Skripten für vim ist relativ einfach, obwohl, wie Sie kommentiert haben, noch niemand darauf geantwortet hat. Stimmen Sie von mir ab.
quelle
Ich würde gerne die gleiche Funktionalität haben, die Sie suchen, und bin gerade auf ein vielversprechendes Plugin gestoßen:
https://github.com/Shougo/neocomplcache scheint das neue Autocomplpop zu sein und scheint während meiner ersten Versuche recht gut zu funktionieren ... jetzt, um die Omni-Vervollständigung für die Arbeit mit Scala ~ zu konfigurieren
quelle
Ich habe YouCompleteMe kürzlich entdeckt . Es verhält sich ähnlich wie das Autocomplete-Tool von Visual Studio. Eine Demonstration ist hier zu sehen:
https://www.youtube.com/watch?v=YuMyHAHF0xs
quelle
In jedem Fall empfehle ich YouCompleteMe (YCM) . Es bietet (Fuzzy-) Matching von Kennungen Ihrer aktuellen Datei sowie Pfadvervollständigung, Integration in externe Vervollständigungs-Engines, ...
ad 1)
Wenn Sie die semantische Vervollständigung von Eclipse mögen , verwenden Sie eclim, um vim in Eclipse zu integrieren. (Verwenden Sie alternativ eine andere semantische Engine für YCM)
ad 2)
Diese 2 spielen übrigens gut zusammen ,: YCM kann sogar die Funktionsdefinition (= Parameterliste) der kürzlich abgeschlossenen Funktion bereitstellen!
ad 3)
das macht YCM sowieso
ad 4)
nicht ganz sicher, was du damit meinst. nie verwendet ctags!
PS: Ich empfehle dringend, zusätzlich UltiSnips und Tagbar (und wenn Sie UndoTree mögen ) zu verwenden, was vim zu einer perfekten IDE für mich macht.
quelle