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?

Était-ce utile?

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]*")
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top