2010-05-05 3 views
6

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

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

#ifndef _UUID_ 
#define _UUID_ 

// Code goes here! 

#endif // _UUID_ 

autocmd линия для заполнения _UUID_ в .vimrc является:

autocmd bufnewfile *.h exe "1,$s/_UUID_/" . r!uuidgen ."/g" 

Проблема приходит в под г! uuidgen. Как вставить результат выполнения команды-оболочки как текст в строке autocmd? Или в команде замены vi?

ответ

5

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

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

+0

Работали, большое спасибо! Когда-нибудь вам придется проверять свои шаблоны. –

1

Мой результате autocmd линии после того, как предложение Люка было, ради потомства:

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

Простой «% s/_UUID_» должно быть достаточно. Однако я не уверен в заказе, в котором выполняется несколько автокоманд. Это одна из причин, по которой я всегда предпочитаю полагаться на функции (или ftplugins, или локальные vimrcs), где речь идет об автокомандах. –

+0

@Luc Hermitte - мой vim-fu улучшается. Спасибо за советы. –