vim + c ++: Einsatz einer UUID in einer Schutzklausel
-
03-10-2019 - |
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?
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]*")