vim + C++: вставить uuid в предложение guard
Я пытаюсь автоматизировать заголовки комментариев к файлам. Я застрял, пытаясь выяснить, как вставить результат uuidgen
введите в мой заголовок команду auto vimd для vim.
Внутри заголовка присутствует текст-заполнитель, например так:
#ifndef _UUID_
#define _UUID_
// Code goes here!
#endif // _UUID_
Строка autocmd для заполнения _UUID_
в.vimrc есть:
autocmd bufnewfile *.h exe "1,$s/_UUID_/" . r!uuidgen ."/g"
Проблема приходит под r! Uuidgen. Как вставить результат выполнения команды оболочки в виде текста в строку autocmd? Или в команде подстановки vi в этом отношении?
2 ответа
Используйте system(), и не забудьте сжать результат -> matchstr(system('uuidgen'), "[^\n\r]*")
NB. Для более сложных шаблонов вы можете использовать такие решения, как mu-template. Например, в c-header.template вам пришлось бы изменить значение s:guard
на вызов matchtr()+system().
Моя полученная строка autocmd после предложения Люка была для потомков:
autocmd bufnewfile *.h exe "1,$g/_UUID_/s/_UUID_/" . matchstr(system('uuidgen'), "[^\n\r]*")