vim + C ++: Inserire un UUID in una clausola di guardia
-
03-10-2019 - |
Domanda
Sto cercando di automatizzare i file di intestazioni di commento. Sono bloccato cercando di capire come inserire il risultato del comando uuidgen
nel mio header usando autocmd di vim.
All'interno l'intestazione, il testo segnaposto è presente, in questo modo:
#ifndef _UUID_
#define _UUID_
// Code goes here!
#endif // _UUID_
La linea autocmd a _UUID_
popolano in Vimrc è:
autocmd bufnewfile *.h exe "1,$s/_UUID_/" . r!uuidgen ."/g"
Il problema è in arrivo in meno di r! Uuidgen. Come si inserisce il risultato di una shell di comando esecuzione come testo nella linea autocmd? O in un comando vi sostituzione per quella materia?
Soluzione
L'utilizzo del sistema (), e non dimenticate di chomp il risultato
-> matchstr(system('uuidgen'), "[^\n\r]*")
NB: Per i modelli più complessi, è possibile utilizzare soluzioni come mu-template . Per esempio, in c-header.template , si sarebbe dovuto modificare il valore di s:guard
alla chiamata a matchtr () + system ().
Altri suggerimenti
Il mio conseguente linea autocmd dopo il suggerimento di Luc era, per l'amor posteri:
autocmd bufnewfile *.h exe "1,$g/_UUID_/s/_UUID_/" . matchstr(system('uuidgen'), "[^\n\r]*")