如何跨代码重复某个操作?

时间:2017-04-09 07:41:16

标签: vim

我需要在遍布代码库的几行代码中重复某个操作。例如,

x = y;

需要替换为

EQUATE(x,y);

但是,每个实例都需要手动评估,因为只有在xy被声明为unit16_t时才需要这样做。所以我寻求的功能是能够浏览各种感兴趣的文件,每当我遇到上述操作需要运行的行时,我应该能够按下一定数量的键来代替给定的具有所需更改的代码行。所以说如果我遇到一个看起来像下面的其他地方的一行

struct_x.var_x = struct_y.var_y;

我应该能够用

替换它
EQUATE(struct_x.var_x, struct_y.var_y);

只需一组简单的按键。

1 个答案:

答案 0 :(得分:1)

这是我使用宏来执行此操作的方式:

  1. 开始使用qa q录制宏以开始录制,然后保存在注册表a中。
  2. 移至该行的开头:^
  3. 输入插入模式(i)并输入EQUATE(
  4. 然后在命令模式下搜索并替换操作::.s/\ = \ /,/g - 搜索=并在此行上将其替换为,
  5. 使用$移至行尾,再次进入插入模式并关闭括号。
  6. 停止录制宏 - q
  7. 那就是它!在您要使用它的每个其他地方重播@a的宏。