在我们进行文本编辑的时候,经常会遇到一些需要进行重复操作的情况,比如将如下的内容:
#include "stdio.h"
#include "stdio.h"
#include "stdio.h"
#include "stdio.h"
更改为:
#include <stdio.h>
#include <stdio.h>
#include <stdio.h>
#include <stdio.h>
当然这只是个简单例子,实际的情况可能更为复杂,那么我们在VIM中应该怎样高效的处理这样的问题呢?其中一个解决方法为使用宏(macro),或称所谓的记录与回放操作。
宏操作与"."命令不同,其原理是将一组操作记录进一个寄存器中,然后再将这些个操作读出来,像上面这样的每行均相同的操作,用这种方法相当有效,具体操作方法为:
1. 使用命令qa(其中的a为寄存器名,可自由指定),将结果保存至寄存器a中,其中a可为从a到z的任意字母
2. 输入需要执行的命令
3. 键入q,结束操作的录制
4. 输入@a,这里的a为第一步中指定的寄存器名,执行先前录制的操作,我们可以在@a前加数字,例如4@a等。
于是相应的,要达到上面的更改效果,我们可以进行如下的操作:
0. 首先将光标移至第一行的最后一个字符,即‘>’上面
1. qa开始录制宏,编辑器下方提示:recording
2. shift+b将光标移至前一个<的位置,s,",将其修改为",$移至行尾,s, ",将其修改为",j,移至下一行
3. q完成录制
4. 3@a进行宏回放,将剩余3行进行相同的更改
#include "stdio.h"
#include "stdio.h"
#include "stdio.h"
#include "stdio.h"
更改为:
#include <stdio.h>
#include <stdio.h>
#include <stdio.h>
#include <stdio.h>
当然这只是个简单例子,实际的情况可能更为复杂,那么我们在VIM中应该怎样高效的处理这样的问题呢?其中一个解决方法为使用宏(macro),或称所谓的记录与回放操作。
宏操作与"."命令不同,其原理是将一组操作记录进一个寄存器中,然后再将这些个操作读出来,像上面这样的每行均相同的操作,用这种方法相当有效,具体操作方法为:
1. 使用命令qa(其中的a为寄存器名,可自由指定),将结果保存至寄存器a中,其中a可为从a到z的任意字母
2. 输入需要执行的命令
3. 键入q,结束操作的录制
4. 输入@a,这里的a为第一步中指定的寄存器名,执行先前录制的操作,我们可以在@a前加数字,例如4@a等。
于是相应的,要达到上面的更改效果,我们可以进行如下的操作:
0. 首先将光标移至第一行的最后一个字符,即‘>’上面
1. qa开始录制宏,编辑器下方提示:recording
2. shift+b将光标移至前一个<的位置,s,",将其修改为",$移至行尾,s, ",将其修改为",j,移至下一行
3. q完成录制
4. 3@a进行宏回放,将剩余3行进行相同的更改