vim + c ++: un insert uuid dans une clause de garde
-
03-10-2019 - |
Question
Je suis en train d'automatiser les en-têtes de commentaire de fichier. Je suis coincé à essayer de comprendre comment insérer le résultat de la commande uuidgen
dans mon tête à l'aide de autocmd de vim.
Dans l'en-tête, le texte de l'espace réservé est présent, comme ceci:
#ifndef _UUID_
#define _UUID_
// Code goes here!
#endif // _UUID_
La ligne autocmd à _UUID_
Populate dans vimrc est:
autocmd bufnewfile *.h exe "1,$s/_UUID_/" . r!uuidgen ."/g"
Le problème vient en sous r! Uuidgen. Comment puis-je insérer le résultat d'une commande shell-exécution sous forme de texte dans la ligne autocmd? Ou dans une commande de substitution vi pour cette question?
La solution
système Utilisation (), et ne pas oublier de tronquer le résultat
-> matchstr(system('uuidgen'), "[^\n\r]*")
NB: Pour les modèles plus complexes, vous pouvez utiliser des solutions comme mu-template . Par exemple, dans c-header.template , vous auriez dû changer la valeur de s:guard
à l'appel à matchtr () + système ().
Autres conseils
Ma résultante ligne autocmd après la suggestion de Luc était, pour l'amour de la postérité:
autocmd bufnewfile *.h exe "1,$g/_UUID_/s/_UUID_/" . matchstr(system('uuidgen'), "[^\n\r]*")