可重复操作及回退
目的 |
操作 |
重复 |
回退 |
做出一个修改 |
{edit} |
. |
u |
在行内查找下一个指定字符 |
f{char} /t{char} |
; |
, |
在行内查找上一个指定字符 |
F{char} /T{char} |
; |
, |
在文档中查找下一处匹配项 |
/pattern<CR> |
n |
N |
在文档中查找上一处匹配项 |
?pattern<CR> |
n |
N |
执行替换 |
:s/target/replacement |
& |
u |
执行一系列修改 |
qx{changes}q |
@x |
u |
Vim 的操作
Vim 的强大很大程度上源于操作符与动作命令相结合,须知,操作符 + 动作命令 = 操作。比较常见的操作符有
命令 |
用途 |
c |
修改 |
d |
删除 |
y |
复制到寄存器 |
g~ |
转换大小写 |
gu |
转换为小写 |
gU |
转换为大写 |
> |
增加缩进 |
< |
减少缩进 |
= |
自动缩进 |
! |
使用外部程序过滤 {motion} 所跨越的行 |
普通模式
h
: 光标向左移动
j
: 光标向下移动
k
: 光标向上移动
l
: 光标向右移动
w
: 前移一个单词,光标停在下一个单词开头
W
: 移动下一个单词开头,但忽略一些标点
e
: 前移一个单词,光标停在下一个单词末尾
E
: 移动到下一个单词末尾,如果词尾有标点,则移动到标点
b
: 后移一个单词,光标停在上一个单词开头
^
: 光标移动至当前行开头
$
: 光标移动至当前行末尾
gg
: 光标移动至文件开头
G
: 光标移动至文件结尾
i
: (insert) 在当前光标之前添加内容,进入插入模式
I
: (Insert) 在当前行的开头添加内容,进入插入模式
a
: (append) 在当前光标之后添加内容,进入插入模式
A
: (Append) 在当前行的结尾添加内容,进入插入模式,等价于 $a
o
: 在下一行创建新行,进入插入模式,等价于 A<CR>
O
: 在上一行创建新行,进入插入模式,等价于 ko
x
: 删除光标下的字符
cw
: 删除从光标位置到单词结尾的字符,并进入插入模式
db
: 删除从光标位置到单词开头的字符
dw
: 删除从光标位置到单词结尾的字符
daw
: 删除光标所在的单词,然后光标停在上一个词的结尾
dd
: 删除整行
u
: 撤销修改
yyp
: 复制当前行至下一行
>G
: 增加从当前行到文档末尾的层级缩进
.
: 重复上次修改
f{char}
: 查找下一处指定字符出现的位置
插入模式
<C-h>
: 删除前一个字符,等同于退格键
<C-w>
: 删除前一个单词
<C-u>
: 删至行首
<ESC>
或<C-[
: 切换回普通模式(一些用户喜欢自定义为 ii
或者 jk
)