2010-05-05 45 views
6

我试图自动化文件评论标题。我试图找出如何使用vim的autocmd将uuidgen命令的结果插入到我的头文件中。vim + C++:在保护子句中插入一个uuid

头内部,占位符文本存在,这样的:

#ifndef _UUID_ 
#define _UUID_ 

// Code goes here! 

#endif // _UUID_ 

自动命令行中的.vimrc填充_UUID_是:

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

问题是下[R进来!的uuidgen。 如何将shell命令执行的结果作为文本插入到autocmd行中?或者在这个问题的vi替代命令?

回答

5

使用系统(),并且不要忘了终日啃食结果 - >matchstr(system('uuidgen'), "[^\n\r]*")

注:对于更复杂的模板,你可以使用解决方案,如mu-template。例如,在c-header.template中,您必须将s:guard的值更改为对matchtr()+ system()的调用。

+0

的工作,非常感谢!必须在某个时候检出模板。 – 2010-05-05 16:40:14

1

我造成吕克的建议后自动命令行是为子孙后代着想:

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

简单的“%s/_UUID_”应该足够了。但是,我不确定几个自动命令的执行顺序。这是我总是更喜欢依赖于自动命令所关心的函数(或ftplugins,或本地vimrcs)的原因之一。 – 2010-05-05 15:41:55

+0

@Luc Hermitte - 我的vim-fu正在改进。感谢您的提示。 – 2010-05-05 16:42:52