Vim-Plugin - benutzerdefinierte automatische Vervollständigung von Parametern im Befehlsmodus

8

Ich schreibe mein erstes vim-Plugin (viml + python). Ein Befehl, den das Plugin hat, ist "GetStepCommand ()" und es ruft grundsätzlich Daten von einer entfernten Datenquelle ab, ich massiere die Daten ein bisschen und kopiere sie in den Puffer, so dass der Benutzer mit der Bearbeitung beginnen kann. Es gibt einen Parameter, den der Benutzer an "GetStepsCommand" liefern muss und das ist der Suchpfad zu dem Ort, an dem sich die Daten befinden, zB: / projects / procedure / step

Jetzt kann dieser Pfad lang sein und leicht zu verfehlen etwas buchstabieren. Also wollte ich meine eigene Tab-Vervollständigung für den Parameterteil implementieren. Vim kümmert sich bereits um das automatische Vervollständigen des Befehls durch Tabbing, aber natürlich kann es nicht wissen, wie man den Parameter vervollständigt (etwas, das ich selbst lösen werde).

Aber zuerst muss ich wissen: - ob / wie ich den Tastendruck im Kommando-Modus abfangen kann - Holen Sie sich die Kommandozeile, die der Benutzer gerade schreibt - Testen Sie, ob es sich im Befehlsmodus oder im Einfüge / Ansichtsmodus befindet - und schließlich eine aktualisierte Befehlszeile (tab-completed) zurückgeben, die der Benutzer nach dem Tastendruck mit ':' weiterschreiben kann.

Alle Hinweise, Tipps, Artikel, Tutorials ... Informationen werden sehr geschätzt

    
Kristoffer Nordström 28.09.2012, 08:08
quelle

1 Antwort

6

Wenn das Argument für Ihren benutzerdefinierten Befehl ein Dateisystempfad ist, müssen Sie einfach -complete=file zu Ihrer :command Definition hinzufügen, wie folgt:

%Vor%

Sie müssen die Tasten im Befehlszeilenmodus nicht abfangen (und das sollten Sie nicht tun, da dies zu schlechten Interaktionen mit anderen Plugins führen würde!) Vim bietet andere Standardabschlüsse (vgl. :help :command-complete ), sogar eine benutzerdefinierte eine, in der eine Vimscript-Funktion aufgerufen wird, um die Vervollständigungskandidaten zu bestimmen.

    
Ingo Karkat 28.09.2012, 08:57
quelle

Tags und Links