首页 > 代码库 > vim学习之以退为进——可重复移动和可重复修改的美妙结合
vim学习之以退为进——可重复移动和可重复修改的美妙结合
时间:2014.06.29
地点:基地
----------------------------------------------------------------------------------
一、任务1:使修改可重复
在指定字符前后各添加一个字符。比如在连接字符串的 + 号操作前后均流出一个空格( [ ]+[ ] )
我们知道 s命令可以删除光标下的字符进入插入模式,现在我们还可以总结一下进入插入模式的几种方式:
1. i 命令:当前光标前插入
2. a命令:当前光标后插入
3. s命令:当前光标下删除后插入
4.大写i命令:当前光标所在行首插入
5.大写a命令:当前光标所在行尾插入
6.大写S命令:删除当前光标所在行插入
7. dd命令:仅仅是删除当前行,不会进入插入模式
于是小s命令可删除光标下的字符进入插入模式后的功能后,为了完成任务我们可先执行小s命令删除光标下的字符,然后键入:空格+空格,然后退出,这样,按键集合:
[ s 空格 + 空格 Esc ]将被记录下来形成一个修改单元,于是接下来就可采用点号命令了。现在,我们所要做的事情就是把光标移动到下一个 + 号处,然后用 . 命令重复执行这一操作。
----------------------------------------------------------------------------------
二、任务2:使移动可重复
为了查找本行中某指定字符,我们可以使用 f{char}命令,比如 f+ 后光标将移动到下一个 + 号所在位置。于是,我们没完成一次修改后都可以使用 f+ 跳转到该行的下一个 + 号所在位置。但是,更好的方法是使用; 号 命令重复查找上次f命令所查找的字符。于是就没必要多次输入 f+ 了。
----------------------------------------------------------------------------------
三、综合上述两种移动和修改模式
通过上面,我们知道 ;命令可帮我们定位到下一个目标字符上,而 . 命令可重复上次修改,这样我们配合使用 ;. 就可完成将 + 号修改成 [ ]+[ ]了。
现在比如有一行这样的代码:
string str="You"+"are"+"my"+"world";我们想将 + 号全部改为 [ ]+[ ] ,步骤如下:
1.先 f+ 光标定位到第一个 + 号
2.小s命令,删除光标下的+ 号字符 进入插入模式,然后键入: [ ]+[ ]
3.Esc退出修改
4.使用 ;号命名重复上次查找,将光标定位
5.使用 . 号命令重复上次修改
6.不断重复步骤4和5,直到修改完为止。