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
光标停留在查找字符之前