光标

  1. h - 左移光标
  2. j - 下移光标
  3. k - 上移光标
  4. l - 右移光标
  5. w - 移动到下个单词开头
  6. W - 移动到下个单词开头(单词含标点)
  7. e - 移动到下个单词结尾
  8. E - 移动到下个单词结尾(单词含标点)
  9. b - 移动到上个单词结尾
  10. B - 移动到上个单词结尾(单词含标点)
  11. 0 - 移动到行首
  12. ^ - 移动到行首的非空白符
  13. $ - 移动到行尾
  14. G - 移动到文档末行行首
  15. 5G - 移动到第五行
  16. fx - jump to next occurrence of character x
  17. tx - jump to before next occurrence of character x
  18. } - Jump to next paragraph (or function/block, when editing code)
  19. { - Jump to previous paragraph (or function/block, when editing code)
Tip 命令前追加数字表示命令的重复次数, 比如 4j 表示向下移动四行

插入模式 - 插入/追加文本

  1. i - 从光标前开始插入字符
  2. I - 从行首开始插入字符
  3. a - 从光标后开始插入字符
  4. A - 从行尾开始插入字符
  5. o - 在当前行之下另起一行, 开始插入字符
  6. O - 在当前行之上另起一行, 开始插入字符
  7. ea - 从当前单词末尾开始插入
  8. Esc - 退出插入模式

编辑

  1. r - 替换当前字符
  2. J - 将下一行合并到当前行
  3. cc - 清空当前行, 然后进入插入模式
  4. cw - 从光标位置开始, 修改单词
  5. c$ - 从光标位置开始, 修改当前行
  6. s - 删除当前字符, 然后进入插入模式
  7. S - 清空当前行, 然后进入插入模式 (同cc)
  8. xp - 当前字符后移
  9. u - 撤销
  10. Ctrl + r - 重复
  11. . - 再次执行上个命令

选择文本(可视化模式)

  1. v - 进入可视化模式, 移动光标高亮选择, 然后可以对选择的文本执行命令(比如y-复制)
  2. V - 进入可视化模式(行粒度选择)
  3. o - 切换光标到选择区开头/结尾
  4. Ctrl + v - 进入可视化模式(矩阵选择)
  5. O - 切换光标到选择区的角
  6. aw - 选择当前单词
  7. ab - 选择被 () 包裹的区域(含括号)
  8. aB - 选择被 {} 包裹的区域(含花括号)
  9. ib - 选择被 () 包裹的区域(不含括号)
  10. iB - 选择被 {} 包裹的区域(不含花括号)
  11. Esc - 退出可视化模式

可视化模式命令

  1. > - 向右缩进
  2. < - 向左缩进
  3. y - 复制
  4. d - 剪切
  5. ~ - 大小写切换

剪切, 复制, 粘贴

  1. yy - 复制当前行
  2. 2yy - 复制 2 行
  3. yw - 复制当前单词
  4. y$ - 复制, 从光标位置到行末
  5. p - 在光标后粘贴
  6. P - 在光标前粘贴
  7. dd - 剪切当前行
  8. 2dd - 剪切 2 行
  9. dw - 剪切当前单词
  10. D - 剪切, 从光标位置到行末
  11. d$ - 剪切, 从光标位置到行末 (同D)
  12. x - 剪切当前字符

退出

  1. :w - 保存
  2. :wq or :x or ZZ - 保存并退出
  3. :q - 退出(修改未保存时警告)
  4. :q! or ZQ - 不保存强制退出

查找/替换

  1. /pattern - 查找pattern
  2. ?pattern - 向上查找pattern
  3. \vpattern - 'very magic' pattern: non-alphanumeric characters are interpreted as special regex symbols (no escaping needed)
  4. n - 查找下一个
  5. N - 查找上一个
  6. :%s/old/new/g - 替换全部
  7. :%s/old/new/gc - (逐个)替换

多文件

  1. :e filename - 新建缓冲区打开 filename
  2. :bnext or :bn - 切换到下个缓冲区
  3. :bprev or :bp - 切换到上个缓冲区
  4. :bd - 关闭缓冲区
  5. :sp filename - 新建缓冲区打开 filename 并水平分栏
  6. :vsp filename - 新缓冲区打开 filename 并垂直分栏
  7. Ctrl + ws - 水平分栏
  8. Ctrl + ww - 在分栏间切换
  9. Ctrl + wq - 关闭分栏
  10. Ctrl + wv - 垂直分栏
  11. Ctrl + wh - 切换到右侧分栏
  12. Ctrl + wl - 切换到左侧分栏
  13. Ctrl + wj - move cursor to the window below (horizontal split)
  14. Ctrl + wk - move cursor to the window above (horizontal split)

页签

  1. :tabnew filename or :tabn filename - 创建新页签/在新标签页中打开文档
  2. Ctrl + wT - 将分栏变成页签
  3. gt or :tabnext or :tabn - 切换到下一个页签
  4. gT or :tabprev or :tabp - 切换到上一个页签
  5. #gt - 切换到第 # 个页签
  6. :tabmove # - 移动页签到第 # 位(下标从 0 开始)
  7. :tabclose or :tabc - 关闭当前页签
  8. :tabonly or :tabo - 关闭其他页签