2010-05-05 5 views
6

Ich versuche, Datei Kommentarheader zu automatisieren. Ich stehe fest, wie ich das Ergebnis des Befehls uuidgen mit Hilfe von vims Autocd in meine Kopfzeile einfügen kann.Vim + C++: Einfügen einer Uuid in eine Wächterklausel

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

#ifndef _UUID_ 
#define _UUID_ 

// Code goes here! 

#endif // _UUID_ 

Die autocmd Linie _UUID_ in .vimrc zu füllen ist:

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

Das Problem in unter r kommt! Uuidgen. Wie füge ich das Ergebnis einer Shell-Kommandoausführung als Text in die AutoCAD-Zeile ein? Oder in einem vi Ersatzbefehl für diese Angelegenheit?

Antwort

5

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

NB: Für komplexere Vorlagen Sie Lösungen wie mu-template nutzen könnten. Zum Beispiel müssten Sie in c-header.template den Wert s:guard in den Aufruf von matchtr() + system() ändern.

+0

Arbeitete, vielen Dank! Müssen Ihre Vorlagen irgendwann auschecken. –

1

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]*") 
+0

Ein einfaches "% s/_UUID_" sollte ausreichen. Ich bin mir jedoch nicht sicher über die Reihenfolge, in der mehrere Autokommandos ausgeführt werden. Das ist einer der Gründe, warum ich immer lieber auf Funktionen (oder ftplugins oder lokale vimrcs) ​​angewiesen bin, wo Autokommandos betroffen sind. –

+0

@Luc Hermitte - Mein vim-fu verbessert sich. Danke für die Tipps. –