Vim 如何使用BufWritePre更新我的cpp评论
我在.vimrc中添加了一些代码,以自动更新.cpp和.h文件文档中的“Last update”字段 我已经在我的.py文件中尝试过了,并且成功了。问题是搜索以字符开头的行Vim 如何使用BufWritePre更新我的cpp评论,vim,Vim,我在.vimrc中添加了一些代码,以自动更新.cpp和.h文件文档中的“Last update”字段 我已经在我的.py文件中尝试过了,并且成功了。问题是搜索以字符开头的行*Last Update。以下是我目前掌握的情况: 我的cpp文件中的注释 /** *@file test.cpp *@作者约翰·多伊 *@版本 *@brief *@date *创建日期:2019年5月21日 *最近更新: */ 还有我的vimrc autocmd BufWritePre *.h exe "%s/^ \*
*Last Update
。以下是我目前掌握的情况:
我的cpp文件中的注释
/**
*@file test.cpp
*@作者约翰·多伊
*@版本
*@brief
*@date
*创建日期:2019年5月21日
*最近更新:
*/
还有我的vimrc
autocmd BufWritePre *.h exe "%s/^ \* Last Update:.*$/Last Update: "
\. strftime("%d %b %Y (%T)") . "/e"
这应将评论更新为:
/**
*@file test.cpp
*@作者约翰·多伊
*@版本
*@brief
*@date
*创建日期:2019年5月21日
*最后更新:2019年5月21日(21:15:48)
*/
但我没有任何变化
更新:我的头文件(.h)中有相同的代码已更新以使用
.cpp
和.h
文件
您需要将以下内容添加到.vimrc
或其他来源文件中:
autocmd FileType cpp,h autocmd BufWritePre <buffer> :%s/^ \* Last Update:.*$/\=printf(' * Last Update: ') . strftime("%d %b %Y (%T)")/e
autocmd文件类型cpp,h autocmd BufWritePre:%s/^\*上次更新:.*$/\=printf(“*上次更新:”)。strftime(“%d%b%Y(%T)”)/e
autocmd文件类型cpp,h
- 确保它仅适用于
或.cpp
文件.h
autocmd BufwritePre
- 写入当前缓冲区
:%s/^\*上次更新:.*$/
- 这是replacement命令的开始,在该命令中声明了要替换的模式
\=printf(“*上次更新:”)。strftime(“%d%b%Y(%T)”)/e
- 这是{replacement}和replacement命令的结尾
\=
开头时,它将作为表达式进行计算。
因为字符串不是表达式,所以需要printf来输出字符串的第一部分。这两个函数
printf
和strftime
然后通过
连接在一起,autocmd具有*.h
,示例文件是test.cpp
。这只是你的例子吗?如果是,请更新问题以避免混淆。我也更新了我的答案以使用.h
文件。