如何在Vim错误文件中包含的所有行上执行相同的命令?
场景:我在我的源代码上运行了一个静态代码分析工具,在我的很多文件中发现了一个问题 问题是这份声明如何在Vim错误文件中包含的所有行上执行相同的命令?,vim,Vim,场景:我在我的源代码上运行了一个静态代码分析工具,在我的很多文件中发现了一个问题 问题是这份声明 *retval = -1; 需要由 if(retval != NULL) { *retval = -1; } 我已经设法把所有相关的地方都放在了一个循环中,并开始了循环 修正代码 这个工作流程可以,但我有400个地方可以触摸,所以有点无聊 我是否可以指示Vim(例如类似)更正错误文件中所有位置的语句 不,简单地打开所有文件,然后是不是一个选项,因为构造*retval=-1;发生多次,但只
*retval = -1;
需要由
if(retval != NULL)
{
*retval = -1;
}
我已经设法把所有相关的地方都放在了一个循环中,并开始了循环
修正代码
这个工作流程可以,但我有400个地方可以触摸,所以有点无聊
我是否可以指示Vim(例如类似)更正错误文件中所有位置的语句
不,简单地打开所有文件,然后是不是一个选项,因为构造*retval=-1;发生多次,但只需要在errorfile中包含的行上进行修复。使用宏:
转到第一个错误
按qq在q寄存器中录制宏
修正这个错误
保存缓冲区
执行:cn以转到下一个错误
按q键完成录制宏
现在,你可以打字了100@q-这将执行步骤3-5 100次。但这不会是100次——在某个时候,它会到达错误列表的末尾并失败。到那时,所有错误将暂时修复…使用宏:
转到第一个错误
按qq在q寄存器中录制宏
修正这个错误
保存缓冲区
执行:cn以转到下一个错误
按q键完成录制宏
现在,你可以打字了100@q-这将执行步骤3-5 100次。但这不会是100次——在某个时候,它会到达错误列表的末尾并失败。到那时,所有错误都将暂时修复…您可以使用宏。只需键入qq,然后执行:cn并修复代码,保存,然后键入q1000@q.您可以使用宏。只需键入qq,然后执行:cn并修复代码,保存,然后键入q1000@q.Doh!这么简单。太多了!啊!这么简单。太多了!这里的问题和答案非常相关:core Vim中甚至有for:cdo,所以如果你觉得特别慈善,你也可以在那里投赞成票。如果静态分析工具能够找到这些问题,你应该能够通过语义修补自动修复它。例如,coccinelle提供了两个修复空解引用的示例补丁:这里的问题和答案非常相关:core Vim中甚至有for:cdo,因此如果你觉得特别慈善,你可以在那里投赞成票,如果静态分析工具能够发现这些问题,那么您应该能够通过语义修补自动修复这些问题。例如,coccinelle有两个示例修补程序用于修复空解引用: