6

我正在尝试自动化文件注释标题。我一直在试图弄清楚如何uuidgen使用 vim 的 autocmd 将命令的结果插入到我的标题中。

在标题内,存在占位符文本,如下所示:

#ifndef _UUID_
#define _UUID_

// Code goes here!

#endif // _UUID_

_UUID_在 .vimrc 中填充的 autocmd 行是:

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

问题出现在 r!uuidgen 下。 如何将 shell 命令执行的结果作为文本插入 autocmd 行?或者在 vi 替换命令中?

4

2 回答 2

5

使用 system(),不要忘记 chomp 结果 ->matchstr(system('uuidgen'), "[^\n\r]*")

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

于 2010-05-05T15:21:28.117 回答
1

为了后代的缘故,我在 Luc 的建议之后得到的 autocmd 行是:

autocmd bufnewfile *.h exe "1,$g/_UUID_/s/_UUID_/" . matchstr(system('uuidgen'), "[^\n\r]*")
于 2010-05-05T15:33:41.380 回答