可重复操作及回退

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