【问题标题】:vim + c++: insert a uuid in a guard clausevim + c++:在保护子句中插入 uuid
【发布时间】:2011-02-15 23:53:51
【问题描述】:

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

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

#ifndef _UUID_
#define _UUID_

// Code goes here!

#endif // _UUID_

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

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

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

【问题讨论】:

    标签: c++ vim autocmd guard-clause


    【解决方案1】:

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

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

    【讨论】:

    • 工作,非常感谢!有时必须检查您的模板。
    【解决方案2】:

    为了后代,我在 Luc 的建议后生成的 autocmd 行是:

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

    【讨论】:

    • 一个简单的“%s/_UUID_”就足够了。但是,我不确定几个自动命令的执行顺序。这就是我总是更喜欢依赖涉及自动命令的函数(或 ftplugins 或本地 vimrcs)的原因之一。
    • @Luc Hermitte - 我的 vim-fu 正在改进。感谢您的提示。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-12
    • 1970-01-01
    • 2010-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多