大家是否有这种经验,“不知道为什么按出recording状态,按ESC貌似无法直接退掉”的情况,个人已经有过好几次了。
与其出来烦人还不如了解它,昨天我就花了点时间学习recording。怎么说,还是有点用的。
首先说明的是recording是怎么按出来的:命令模式下按q。假如你想按退出的:q,右手有点慢的话就有可能出现recording。顺便说一句,q:出来的是command history,command history状态下:q或者enter都可以退出。
那么recording是干啥的?简单来说就是命令序列,加快工作效率的。基本使用是q开启录制,接着选择寄存器,比如1,2,a之类的。之后的到第一个q为止的命令都会加入序列中。录制完成之后@1(1这里为寄存器的名字,你也可以选择其他寄存器)就可以重复寄存器中的命令序列。举个简单的例子:
1.
你需要复制1. 20行,除了Vyo20p(选中行复制,进入下一行,粘帖20次)之外,你可以q1Vyopq录制命令序列,20@1执行20次。
这个例子可能还不能体现recording的好处,接下来举第二个例子,注释10行代码
// int a = 1; int b = 1; int c = 1; int d = 1; int e = 1; int f = 1; int g = 1; int h = 1; int i = 1; int j = 1;
录制序列q2I// jq,//后面的是空格。9@2执行剩下九次。接下来一个例子和SQL有关。
INSERT INTO USER(name) VALUES("foo"); bar baz
你需要像第一行一样组装一个SQL。使用recording,我的操作序列为q3I,输入INSERT INTO USER(name) VALUES(“,按ESC,$a,输入”);,按ESC,按jq,录制结束。接下来按@3应用到下一条。
至此是不是觉得recording用得好的话还是听不错的?补充一下recording相关的一些信息。
@@是执行上一次的命令序列,:reg显示所有的寄存器,:reg 1显示寄存器1中的内容。
2 responses to “vim recording小试”
感觉用处不大嘛。。。平时开发真的用得着这样的功能吗?
不能说完全没有吧,如果不用的话,至少需要知道怎了关掉recording吧,你说呢?