vim + c ++: вставить uuid в предложение guard - PullRequest
6 голосов
/ 05 мая 2010

Я пытаюсь автоматизировать заголовки комментариев к файлам. Я застрял, пытаясь выяснить, как вставить результат команды uuidgen в мой заголовок, используя vim autocmd.

Внутри заголовка присутствует текст-заполнитель, например:

#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 ]

5 голосов
/ 05 мая 2010

Используйте system (), и не забудьте скомпоновать результат -> matchstr(system('uuidgen'), "[^\n\r]*")

Примечание: для более сложных шаблонов вы можете использовать такие решения, как mu-template . Например, в c-header.template вам пришлось бы изменить значение s:guard на вызов matchtr () + system ().

1 голос
/ 05 мая 2010

Моя полученная строка autocmd после предложения Люка была для потомков:

autocmd bufnewfile *.h exe "1,$g/_UUID_/s/_UUID_/" . matchstr(system('uuidgen'), "[^\n\r]*")
...