可重复操作及回退
| 目的 |
操作 |
重复 |
回退 |
| 做出一个修改 |
{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)