vim + c ++: insertar un UUID en una cláusula de guardia
-
03-10-2019 - |
Pregunta
Estoy tratando de automatizar las cabeceras de los archivos de comentario. Estoy atascado tratando de averiguar cómo insertar el resultado del comando uuidgen
en mi cabecera usando autocmd de vim.
Dentro de la cabecera, el texto del marcador está presente, como esto:
#ifndef _UUID_
#define _UUID_
// Code goes here!
#endif // _UUID_
La línea autocmd a _UUID_
poblar en .vimrc es:
autocmd bufnewfile *.h exe "1,$s/_UUID_/" . r!uuidgen ."/g"
El problema viene en menos de r! Uuidgen. ¿Cómo se inserta el resultado de una cáscara de orden de ejecución como texto en la línea autocmd? O en un comando vi sustitución para el caso?
Solución
El uso del sistema (), y no se olvide de masticar el resultado
-> matchstr(system('uuidgen'), "[^\n\r]*")
Nota: Para las plantillas más complejas, se podría utilizar soluciones como mu-plantilla . Por ejemplo, en c-header.template , que habría tenido que cambiar el valor de s:guard
a la llamada a matchtr () + () del sistema.
Otros consejos
Mi línea autocmd resultante después de la sugerencia de Luc era, por el amor posteridad:
autocmd bufnewfile *.h exe "1,$g/_UUID_/s/_UUID_/" . matchstr(system('uuidgen'), "[^\n\r]*")