Ich möchte eine Reihe von @tags
(z. B. @sea_ice
, @models
) in meine Markdown-Dateien bei der Bearbeitung in Vim pflanzen. Zurzeit verwende ich SuperTab, um gewöhnliche Wörter zu tabulatorisieren. Jedoch, wenn ich <tab>
nach dem @
Symbol treffe, gibt es mir keine Liste aller @tags
, aber eher eine lange Liste aller Wörter, die im gegenwärtigen Zusammenhang gefunden werden.Liste @ Tag Auto abgeschlossen in Vim
Ich bemerkte, dass SuperTab benutzerdefinierte Kontextdefinitionen erlaubt, aber ich weiß nichts über vim Scripting und die Dokumentation enthält nur 2 Beispiele, ich bin nicht in der Lage, es selbst zu skripten.
Nach etwas suchen um glaube ich wahrscheinlich eine neue benutzerdefinierte omni komplette Funktion definieren müssen, insbesondere die 2. Hälfte der Funktion:
function! TagComplete(findstart, base) if a:findstart " locate the start of the word let line = getline('.') let start = col('.') - 1 while start > 0 && line[start - 1] != '@' let start -= 1 endwhile return start else " find @tag let res = [] ???? ???? endif return res endif endfun
Dies ist der Code ich arbeite. Aber ich weiß nicht, wie ich es testen soll oder wo es richtig ist. Bitte helfen
Dank
Danke für die Antwort. Es funktioniert irgendwie, aber nicht ganz. Wenn ich 6 solche '@ Tags' in einer Testdatei habe und Ihre Methode verwende, gibt mir die Vervollständigung nur 2 Möglichkeiten (die ersten 2), und es durchläuft die 2. Gibt es einen Längenbegrenzungsparameter oder was? – Jason
Ich fand heraus, dass das 'define' verwendet wird, um eine Definition ** Zeile ** zu markieren. In meinem Fall habe ich mehrere "@ Tags" in einer einzigen Zeile, so dass alle nachfolgenden Tags nicht erkannt werden. Gibt es eine Möglichkeit, dies zu lösen? – Jason