Frage

Ich versuche, Dateikommentar Header zu automatisieren. Ich versuche stecken, um herauszufinden, wie das Ergebnis des uuidgen Befehls in meinen Kopf einfügen Vims autocmd verwendet wird.

Innerhalb der Header, der Platzhalter-Text vorhanden ist, wie folgt aus:

#ifndef _UUID_
#define _UUID_

// Code goes here!

#endif // _UUID_

Die autocmd Linie zu bevölkern _UUID_ in .vimrc ist:

autocmd bufnewfile *.h exe "1,$s/_UUID_/" . r!uuidgen ."/g"

Das Problem kommt in unter r! Uuidgen. Wie füge ich das Ergebnis einer Shell-Befehlsausführung als Text in der autocmd Linie? Oder in einem vi Substitutionsbefehl für diese Angelegenheit?

War es hilfreich?

Lösung

Mit System () und vergessen Sie nicht, das Ergebnis chomp -> matchstr(system('uuidgen'), "[^\n\r]*")

Hinweis: Für komplexere Vorlagen können Sie Lösungen verwenden, wie mu-template . Zum Beispiel in c-header.template , würden Sie haben den Wert von s:guard auf den Aufruf zu ändern, um matchtr () + system ().

Andere Tipps

Meine resultierende autocmd Linie nach Luc Vorschlag war, für die Nachwelt willen:

autocmd bufnewfile *.h exe "1,$g/_UUID_/s/_UUID_/" . matchstr(system('uuidgen'), "[^\n\r]*")
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top