Tip 1 dot 命令
说明: . dot 重复上个命令的使用
1 | line one |
x :删除当前光标下的字符
1 | one " x . . . x 删除, . 重复 |
如图:
几个小提示:
:set nu 显示行号 :set nonu 关闭行号显示

:3,5 co 8 将9到12行的内容输出到8行

:3,5 de 删除3到5行的内容

>G 增加从当前行到文件末尾所有行的缩进.同理,使用 . 可以重复增加缩进

还可以利用 j. 做成下面的布局
1 | line one |

Tip 2 不要重复
例如,我们想要在下面所有的行后面加一个分号
1 | var foo = 1 |
使用 $ 移动到行末尾,a追加然后输入; ,然后按<Esc>返回命令模式.这算完成了第一行
如果对下面两行也应用这个,就应该: j$.
1 | var foo = 1; |
虽然这样也能完成,但是还是差点意思.还是有提升空间的.
减少无关的移动
a 是在当前光标位置后面追加,并自动切换到插入模式
A 是在当前行末进行追加,并自动切换到插入模式 相当于 $a
1 | var foo = 1; " A;<Esc> |
d 删除,不能单独用,得跟后续操作符,比如 dd 是删除一整行,d$ 是删除直到行的末尾
x 删除当前光标下的单个字符
c 跟 d 类次,但是删除完成后会进入插入模式
c 和 d 都要加入motion motion类似是 w b 等这些
23,35 co 66 复制
23,35 m 66 剪切
23,35 de 删除
几个一个顶俩的快捷键
C c$ 删除到行末尾,并进入插入模式
s cl 替换当前字符: c加motion,l 一个字符
S ^C 删除整个行 ^移动到行首,C删除整行
I ^i 到行首进行插入
A $a 到行尾进行插入
o A<CR> 进入下一行,并进入插入模式
O ko 进入上一行,然后插入
Tip 3 退一步,进三步
1 | 上面的代码看着不太舒服,因为在我们印象中,加号两边应该有空格.那么我们来看怎么以Vim的方式完成这个任务: `f+` 查找最近的`+` , `s` 替换`+` 为 `空格+空格` ```var foo = "method(" + argument1+","+argument2+")"; |
对于后面的,我们当然可以使用 f+ 然后 . 重复替换,完成任务.
但是这里有个新的操作符 ; 这个 ; 可以重复执行最近的查找操作.f+就是一个查找操作.所以,对于后面的+ ,我们可以通过 ;. 依次完成替换.
Tip4 操作,重复,撤销
通过以上的几个tip,我们学会了,先操作,然后另其重复执行,借此完成一些重复任务.
但是有时候,我们可能在反复的重复操作中,按多了.例如 tip2 中的 j.j.j. 很可能顺序按错了. 如果出现错误,那么我们就可以在出错的时候按 u 来撤销操作.又或者,Tip3中的;按多了(意味着移动的太过了)那么可以使用,来跳回去.
通过以上的描述,能看出来,不同的误操作,对应着不同的撤销方式.下面是个参考表
1 | 意图 操作 重复 撤销 |
f 和 t 的区别是 f 停留光标在查找字符,t光标停留在查找字符之前