我正在用 C++ 建立一个相当大的(~50 个函数)测试库。我忘记了函数必须返回整数。我实际上根本忘记输入返回类型,这有多愚蠢?我在每个函数的开头添加了 int 返回类型:
:%s/^[a-z]/int &/g
但现在我不知道如何添加return 0;
到它们中。我试过:
:%s/{\r\r}/{\r\treturn 0;\r}/g
以及它的变体,每个都说找不到模式。函数设置如下:
int function_name()
{
}
我希望它们看起来像:
int function_name()
{
return 0;
}
有任何想法吗???
答案1
vim
具有这种特性,因为您必须用来\n
匹配正则表达式中的换行符,但是\r
(\r
否则是 CR,而不是换行符)将其插入命令的右侧s/LHS/RHS/
(其中\n
插入 NUL)。
我一直不明白为什么。即使考虑到Enter按键发送的\r
字符vim
必须转换为 NL(就像终端处于规范模式时 tty 行规则所做的那样)并不能解释一切。您还会注意到,当您输入\n
字符(按Ctrl+J)时,vim
会插入一个 NUL 字符。
:h NL-used-for-Nul
告诉我们这是因为vim
在内部将 NUL 存储为 NL(我想这样它仍然可以使用 NUL 分隔字符串),但它没有解释为什么它决定在界面中对用户可见。
不管怎样,事情就是这样,所以我们只能凑合着用,所以这里:
:%s/{\n\n}/{\r\treturn 0;\r}/g
(我们正在匹配换行符,将其替换为转换为换行符的 CR 字符)。
答案2
您可以使用
:%s/^}/ return 0;\r}/g
您实际上不需要关心左大括号,找到缩进为 0 的右大括号就足够了。