Vim 如何跨代码行重复某个操作?
我需要在代码库中的几行代码中重复某个操作。比如说,Vim 如何跨代码行重复某个操作?,vim,Vim,我需要在代码库中的几行代码中重复某个操作。比如说, x = y; 需要替换为 EQUATE(x,y); 但是,每个实例都需要手动评估,因为只有当x和y被声明为unit16\t时,才需要进行评估。因此,我寻求的功能是能够浏览各种感兴趣的文件,并且每当我遇到需要运行上述操作的行时,我应该能够只按特定的键序列,用所需的更改替换给定的代码行。比如说,如果我在其他地方遇到一条线,看起来像下面这样 struct_x.var_x = struct_y.var_y; 我应该可以把它换成 EQUATE(st
x = y;
需要替换为
EQUATE(x,y);
但是,每个实例都需要手动评估,因为只有当x和y被声明为unit16\t时,才需要进行评估。因此,我寻求的功能是能够浏览各种感兴趣的文件,并且每当我遇到需要运行上述操作的行时,我应该能够只按特定的键序列,用所需的更改替换给定的代码行。比如说,如果我在其他地方遇到一条线,看起来像下面这样
struct_x.var_x = struct_y.var_y;
我应该可以把它换成
EQUATE(struct_x.var_x, struct_y.var_y);
通过一组简单的击键。这就是我使用宏执行此操作的方式: 使用qa:q开始录制宏以开始录制,然后保存在寄存器a中。 移动到行的开头:^ 输入插入模式i并键入Equale。 然后在命令模式下搜索并替换操作::.s/\=\/,/g-search for=并将其替换为,在此行。 使用$移动到行的末尾,再次进入插入模式并关闭括号。 停止录制宏-q
就这样!在需要使用宏的其他地方用@a重放宏。为什么不使用宏?这很好,刚刚学会了如何使用宏-我对vim很陌生。它完成了任务。您可以将^i到i和$a到a合并。您不需要指定。-当前行是:s中的默认范围。您也不需要转义空格::s/=/,/g工作正常。