vim-10-认识数字&点的威力
# 任务点
# 数字
语法:
- 数字 + operation + 动作(范围)
- operation + 数字 + 动作(范围)
比如删除三个单词:3dw
或者 d3w
好处:保持了连贯的撤销历史记录
坏处:需要有思考的时间
# 点(.)
功能:重复上一次的修改(做了更新),比如新增,删除,修改
normal 模式只记录最后一次的修改;而离开 insert 模式之前的所有按键操作都记录
由于 .
在 normal 模式只记录最后一次的修改,而我们的修改操作达到相同的结果会有不同的按键命令,如果和 .
配合使用,可能要寻找出最适合的那个
比如光标在单词尾部删除这个单词的操作,我们现在有三种方式实现:
- bde/bdw: 先移动到单词开头,再删除到单词结尾
- dbx: 先删除到单词结尾(除最后一个字符),再删除最后一个字符
- diw: 利用文本对象内部(i)选中单词,删除
先看 bde/dbw
,这种最后一次的修改是 de/dw
,而没有 b
,因为 b
是移动并没有修改,所以 .
命令无法删除单词
再看 dbx
,这其实是两次修改:db
和 x
,所以 .
只会重复最后一次的 x
命令,也无法删除单词
最后看 diw
,这就是一次修改的命令,所以 .
是可以删除单词的
综上,我们可以知道,这三种方式只有 diw
可以和 .
配合使用
所以我们以后要想和 .
配合使用,需要看看是否是一次修改命令
核心:一键移动,一键操作
比如给每行尾加分号
如果我们先执行 La;
,以后在每行尾加分号的命令就是:j
(一键移动), .
(一键操作)
但其实 La;
这个命令有问题,.
重复的是 a;
,因为 L
是移动,这样当有的行比初始行长时,分号并不是加在行尾的,我们需要先执行 L
,再执行 .
,这样就是两键操作了
所以我们修改成 A;
,这样就是一键操作了
再比如手动多次查找替换
我们先用 /
搜索到要替换的字符,使用 cw + 替换的字符
完成替换操作,以后的替换操作就是:n
(一键移动)查找字符,.
(一键操作)执行替换操作
最后:能够重复就不要用数字,用 .
代替
# 社群讨论
问个问题:使用点操作时,后面不能有修改操作,要不点就变成这个修改命令了,那有什么办法让点继续原来的操作,不记录以后的修改操作,等我点命令都执行完,再回到正常记录的状态
点命令做不到 用宏
那还得继续学啦
我感觉看视频演示,应该是最后一次按键操作记录吧?
上一次,最后一次其实是一个意思,主要是只重复上一次的操作记录,移动啥的不执行
嗯嗯,我懂了,崔哥说的全部指的是那种组合键的全部,
对,组合键是修改的话会重复,如果包含移动,不执行移动
其实看移动怎么定义,视频里面那个在行尾加分号,用了大 A,看着移动了,不过不算是“移动”
移动且进入 insert 模式,并且修改了,这算一次修改操作
倒不是不记录移动,是只记录插入模式的操作,不记录正常模式的移动
刚刚试了一下 ysiw" 这样的操作也是可以用点的 不太理解
因为没涉及移动 是一次完整的操作,整个操作的结果就是给光标所在当前单词添加双引号嘛,点能重复很合理;就是单纯的做了更新所以可以用点重复
就是重复单次更新的完整命令喽
嗯嗯
- 01
- 搭配 Jenkins 实现自动化打包微前端多个项目09-15
- 02
- 自动化打包微前端多个项目09-15
- 03
- el-upload 直传阿里 oss 并且显示自带进度条和视频回显封面图06-05