1、认识 . 命令
. 命令可以“重复上次修改”。
x 会删除光标下字符
u 撤销上次下修改
dd 删除当前行
>G 增加从当前行到文档末尾的缩进层级
. 命令是一个微型的宏
2、不要自我重复
对于在行尾添加内容的常见操作,如添加分号,vim提供了合并操作。
a 在当前光标之后添加内容
A($a) 在当前行的结尾添加内容
复合命令 | 等效的长命令 | 效果 |
C | c$ | 将光标所在位置到行尾的内容删除,并插入 |
s | cl | 删除光标下的字符,并进入插入模式 |
S | ^C | 删除光标所在行的所有内容,并进入插入模式 |
I | ^i | 跳转到下一个插入位置 |
A | $a | 光标移动到当前行的末尾,并进入插入模式 |
o | A<CR> | ~ |
O | ko | 在当前行的上方插入一个新行,并进入插入模式 |
3、以进为退
在一个字符前后各添加一个空格。
f{char} 查找下一个字符出现位置
;重复查找上次 f 命令所查找的字符
s 删除当前下光标字符,并进入插入模式
;带到下一个目标字符,. 重复上次修改
4、执行、重复、回退
除了.命令可以重复以外,@:可以用来重复任意Ex命令,也可以&来重复上次的:substitute命令
对于.命令而言,可以按u撤销上次的修改。
使用f{char}命令之后,可以用,回跳,反方向查找上次f{char}所查找的字符。
表 1-1 可重复的操作及如何回退
目的 | 操作 | 重复 | 回退 |
做出一个修改 | {edit} | . | u |
在行内查找下一指定字符 | f{char}/t{char} | ; | , |
在行内查找上一指定字符 | F{char}/T{char} | ; | , |
在文档内查找下一处匹配项 | /pattern<CR> | n | N |
在文档内查找上一处匹配项 | ?pattern<CR> | n | N |
执行替换 | :s/target/replacement/g | & | u |
执行一些列修改 | qx{changes}q | @x | u |
5、查找并手动替换
:%s/target/replacement/g 一次性替换所有,/g
:这个标志表示替换操作是全局的,即在每一行中所有出现的 target
都会被替换。如果省略 g
,只会替换每行中的第一个匹配项。
但有些时候你不想进行全局替换?
* 可以查找当前光标下的单词,n会跳到下一个匹配项。
cw会删除从光标位置到单词结尾间的字符,并进入插入模式。