2010-05-05 26 views
6

Próbuję zautomatyzować nagłówki komentarzy do plików. Utknąłem próbując dowiedzieć się, jak wstawić wynik polecenia uuidgen do mojego nagłówka za pomocą autocmd vima.vim + C++: wstawić uuid do klauzuli wartownika

Wewnątrz nagłówka, tekst zastępczy jest obecny, jak to: linia

#ifndef _UUID_ 
#define _UUID_ 

// Code goes here! 

#endif // _UUID_ 

autocmd zapełnić _UUID_ w .vimrc jest:

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

Problem nadchodzi w ramach R! uuidgen. Jak wstawić wynik polecenia powłoki-powłoki jako tekst w wierszu autocmd? Lub w poleceniu zastępowania vi dla tej sprawy?

Odpowiedz

5

Zastosowanie systemu(), i nie zapomnij chomp wynikiem ->matchstr(system('uuidgen'), "[^\n\r]*")

NB: W przypadku bardziej złożonych szablonów, można użyć rozwiązania jak mu-template. Na przykład w c-header.template musiałbyś zmienić wartość s:guard na połączenie z matchtr() + system().

+0

działa, wielkie dzięki! Będę musiał kiedyś wyewidencjonować twoje szablony. –

1

Moja wynikające linia autocmd po sugestii Luca był, na litość potomnych:

autocmd bufnewfile *.h exe "1,$g/_UUID_/s/_UUID_/" . matchstr(system('uuidgen'), "[^\n\r]*") 
+0

Prosty "% s/_UUID_" powinien wystarczyć. Nie jestem jednak pewien, w jakiej kolejności wykonuje się kilka autokomend. Jest to jeden z powodów, dla których zawsze wolę polegać na funkcjach (lub ftplugins lub lokalnych vimrcs), w których są autokomendy. –

+0

@ Luc Hermitte - Mój vim-fu się poprawia. Dzięki za wskazówki. –