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]*")
Другие вопросы по тегам