如何在Vim的错误文件中包含的所有行上执行相同的命令?

时间:2013-09-30 14:47:16

标签: vim

场景:我在我的源上运行了静态代码分析工具,发现我的很多文件存在问题。

问题在于声明

*retval = -1;

需要替换为

if(retval != NULL)
{
    *retval = -1;
}

我已经设法将所有相关位置放在errorfile中并从周期开始

这个工作流程可以做到,但我有400个地方可以触摸,所以有点无聊。

我可以指示Vim(类似于例如bufdo)来更正错误文件中存在的所有位置的语句吗?

不,只是打开所有文件而bufdo则不是一个选项,因为构造*retval = -1;多次出现,但只需要修复错误文件中包含的行。

2 个答案:

答案 0 :(得分:4)

使用宏:

  1. 转到第一个错误
  2. qq录制q注册
  3. 的宏
  4. 修正该错误
  5. 保存缓冲区
  6. 执行:cn转到下一个错误
  7. q完成录制宏
  8. 现在,您可以输入100@q - 这将执行步骤3-5 100次。但它不会是100次 - 在某些时候它将到达错误列表的末尾并失败。到那时,所有错误都将被修复(暂时......)

答案 1 :(得分:2)

您可以使用宏。只需输入qq,然后执行:cn并修复代码,保存,然后输入q1000@q