Vim 使用笔记
  文件操作
| 快捷键 | 说明 | 
|---|
| :q | 关闭文件 | 
| :qa | 关闭全部文件 | 
| :w | 保存修改 | 
| :wq/:x | 保存修改并且关闭文件 | 
| ZZ | 保存文件并且退出 | 
| :q!/ZQ | 直接退出不保存修改 | 
  退出输入模式
| 快捷键 | 说明 | 
|---|
| Esc/<C-[> | 退出输入模式 | 
| <C-C> | 退出输入模式并中止当前命令 | 
  编辑
  修改
| 快捷键 | 说明 | 
|---|
| a | 在光标后附加文本 | 
| A | 从行尾开始附加文本 | 
| i | 在光标前插入文本 | 
| o | 在当前行的下一行插入新行 | 
| O | 在当前行的上一行插入新行 | 
| s | 删除当前字符并进入输入模式 | 
| S | 删除当前行并进入输入模式 | 
| C | 删除光标后的所有内容并进入输入模式 | 
| r | 替换一个字符 | 
| R | 进入替换模式 | 
| u | 撤销更改 | 
| <C-R> | 重做更改 | 
  剪贴板
| 快捷键 | 说明 | 
|---|
| x | 删除当前字符 | 
| dd | 删除当前行(剪切) | 
| yy | 复制当前行 | 
| p | 粘贴 | 
| P | 在光标前粘贴 | 
| "*p/"+p | 从系统剪贴板粘贴 | 
| "*y/"+y | 复制到系统剪贴板 | 
  可视模式
| 快捷键 | 说明 | 
|---|
| v | 进入可视模式 | 
| V | 进入可视行模式 | 
| <C-V> | 进入可视块模式 | 
  在可视模式下
| 快捷键 | 说明 | 
|---|
| d/x | 删除选中的文本 | 
| s | 替换选中的文本 | 
| y | 复制选中的文本 | 
查看操作符或其他你可以执行的操作。
  查找和替换
| 快捷键 | 说明 | 
|---|
| :%s/foo/bar/g | 将文档中的所有 foo替换为bar | 
  导航
  方向移动
| 快捷键 | 说明 | 
|---|
| hjkl | 左下上右(箭头键) | 
| <C-U>/<C-D> | 向上/下滚动半页 | 
| <C-B>/<C-F> | 向上/下翻页 | 
  单词
| 快捷键 | 说明 | 
|---|
| b/w | 前一个/下一个单词 | 
| ge/e | 前一个/下一个单词结尾 | 
  行
| 快捷键 | 说明 | 
|---|
| 0(零) | 移动到行首 | 
| ^ | 移动到行首第一个非空字符 | 
| $ | 移动到行尾 | 
  字符
| 快捷键 | 说明 | 
|---|
| fc | 向前移动到字符 c | 
| Fc | 向后移动到字符 c | 
  文档
| 快捷键 | 说明 | 
|---|
| gg | 移动到文档的第一行 | 
| G | 移动到文档的最后一行 | 
| :{number} | 移动到第 {number}行 | 
| {number}G | 移动到第 {number}行 | 
| {number}j | 向下移动 {number}行 | 
| {number}k | 向上移动 {number}行 | 
  窗口
| 快捷键 | 说明 | 
|---|
| zz | 将当前行居中 | 
| zt | 将当前行移动到屏幕顶部 | 
| zb | 将当前行移动到屏幕底部 | 
| H | 移动到屏幕顶部 | 
| M | 移动到屏幕中间 | 
| L | 移动到屏幕底部 | 
  搜索
| 快捷键 | 说明 | 
|---|
| n | 下一个匹配的搜索模式 | 
| N | 上一个匹配 | 
| * | 查找光标下的整个单词的下一个匹配 | 
| # | 查找光标下的整个单词的上一个匹配 | 
  操作符
  使用方式
操作符可以让你对一定范围内的文本(由“动作”定义)进行操作,这些操作在普通模式下执行。
  操作符列表
| 快捷键 | 说明 | 
|---|
| d | 删除 | 
| y | 复制 | 
| c | 修改(删除并插入) | 
| > | 向右缩进 | 
| < | 向左缩进 | 
| = | 自动缩进 | 
| g~ | 切换大小写 | 
| gU | 转换为大写 | 
| gu | 转换为小写 | 
| ! | 通过外部程序过滤 | 
查看 :help operator 获取更多信息。
  示例
将操作符与动作结合使用。
| 快捷键 | 说明 | 
|---|
| dd | 删除当前行 | 
| dw | 删除到下一个单词 | 
| db | 删除到单词的开头 | 
| 2dd | 删除两行 | 
| dip | 删除文本对象(段落内部) | 
| (在可视模式下) d | 删除选中的内容 | 
查看 :help motion.txt 获取更多信息。
  文本对象
  使用方式
文本对象允许你对文本块(对象)内或周围的文本进行操作(使用操作符)。
| 操作符 | 范围 | 文本对象 | 
|---|
| v | i | p | 
| Operator | [i]nside or [a]round | Text object | 
  文本对象列表
| 快捷键 | 说明 | 
|---|
| p | 段落 | 
| w | 单词 | 
| s | 句子 | 
| [({< | 一个 []、()或{}块 | 
| '"` | 一个引号字符串 | 
| b | 一个括号块( () | 
| B | 一个大括号块( {) | 
| t | 一个 XML 标签块 | 
  示例
| 快捷键 | 说明 | 
|---|
| vip | 选择段落 | 
| vipipipip | 选择更多 | 
| yip | 复制段落内部 | 
| yap | 复制段落(包括换行符) | 
| dip | 删除段落内部 | 
| cip | 修改段落内部 | 
查看操作符以了解更多可以执行的操作。
  对比
| 快捷键 | 说明 | 
|---|
| gvimdiff file1 file2 [file3] | 在图形界面中比较文件差异 | 
  其他
  标签页
| 快捷键 | 说明 | 
|---|
| :tabedit [file] | 在新标签页中编辑文件 | 
| :tabfind [file] | 如果文件存在,在新标签页中打开 | 
| :tabclose | 关闭当前标签页 | 
| :tabs | 列出所有标签页 | 
| :tabfirst | 跳转到第一个标签页 | 
| :tablast | 跳转到最后一个标签页 | 
| :tabn | 跳转到下一个标签页 | 
| :tabp | 跳转到上一个标签页 | 
  折叠 (Folds)
| 快捷键 | 说明 | 
|---|
| zo/zO | 打开折叠 | 
| zc/zC | 关闭折叠 | 
| za/zA | 切换折叠状态(打开/关闭) | 
| zv | 打开当前行的折叠 | 
| zM | 关闭所有折叠 | 
| zR | 打开所有折叠 | 
| zm | 增加折叠层级(折叠更多内容) | 
| zr | 减少折叠层级(展开更多内容) | 
| zx | 更新折叠状态 | 
大写字母的命令是递归的,例如 zO 是递归打开折叠。
  导航 (Navigation)
| 快捷键 | 说明 | 
|---|
| % | 跳转到最近的匹配符 {[()]} | 
| [([{[< | 跳转到前一个 ({< | 
| ]) | 跳转到下一个匹配符 | 
| [m | 跳转到前一个方法的起始位置 | 
| [M | 跳转到前一个方法的结束位置 | 
  跳转 (Jumping)
| 快捷键 | 说明 | 
|---|
| <C-O> | 返回到上一个位置 | 
| <C-I> | 前进到下一个位置 | 
| gf | 跳转到光标下的文件 | 
  计数器 (Counters)
  窗口 (Windows)
| 快捷键 | 说明 | 
|---|
| z{height}<Cr> | 将窗口调整到 {height}行的高度 | 
| 快捷键 | 说明 | 
|---|
| :tag Classname | 跳转到 Classname的第一个定义 | 
| <C-]> | 跳转到定义处 | 
| g] | 查看所有定义 | 
| <C-T> | 返回到上一个标签 | 
| <C-O> <C-I> | 前后跳转 | 
| :tselect Classname | 查找 Classname的定义 | 
| :tjump Classname | 查找 Classname的定义并自动选择第一个 | 
  大小写 (Case)
| 快捷键 | 说明 | 
|---|
| ~ | 切换大小写(例如:Case => cASE) | 
| gU | 转换为大写 | 
| gu | 转换为小写 | 
| gUU | 将当前行转换为大写(也可以用 gUgU) | 
| guu | 将当前行转换为小写(也可以用 gugu) | 
这些操作可以在可视模式或普通模式下执行。
  标记 (Marks)
| 快捷键 | 说明 | | — | — | | `^ | 光标在插入模式下的最后位置 | | `. | 当前缓冲区中最后一次更改的位置 | | `" | 最后一次退出当前缓冲区的位置 | | `0 | 最后编辑的文件中的位置 | | '' | 返回到当前缓冲区中跳转前的行 | | ` ` | 返回到当前缓冲区中跳转前的位置 | | [  | 返回到上次更改或复制的文本的开始位置 | |  ] | 返回到上次更改或复制的文本的结束位置 | | <  | 返回到上次可视模式选择的开始位置 | |  > | 返回到上次可视模式选择的结束位置 | | `ma` | 将当前位置标记为 `a` | | a  | 跳转到标记 a 的位置 | | ‘a | 跳转到标记 a 所在行的开头 | | d’a | 删除当前行到标记 a 所在行之间的内容 | | da| 删除当前位置到标记 `a` 之间的内容 | | `c'a` | 更改当前行到标记 `a` 所在行之间的内容 | |ya | 复制当前位置到标记 a 之间的内容 | | :marks | 列出所有当前标记 | | :delm a | 删除标记 a | | :delm a-d | 删除标记 a, b, c, d | | :delm abc | 删除标记 a, b, c` |
  其他 (Misc)
| 快捷键 | 说明 | 
|---|
| . | 重复上一个命令 | 
| ]p | 根据当前缩进级别粘贴内容 | 
| :set ff=unix | 将 Windows 的行尾格式转换为 Unix 格式 | 
  命令行 (Command line)
| 快捷键 | 说明 | 
|---|
| <C-R><C-W> | 将当前单词插入命令行 | 
| <C-R>" | 从 “ 寄存器中粘贴内容 | 
| <C-X><C-F> | 在插入模式下自动完成路径 | 
  文本对齐 (Text alignment)
:center [width]  # 居中对齐指定宽度
:right [width]   # 右对齐指定宽度
:left            # 左对齐
参见 :help formatting
  计算器 (Calculator)
| 快捷键 | 说明 | 
|---|
| <C-R>=128/2 | 显示计算结果:如‘64’ | 
在插入模式下执行。
  以错误状态退出 (Exiting with an error)
功能类似于 :qa,但会抛出一个错误。适用于中止 Git 命令等情况。
  拼写检查 (Spell checking)
| 快捷键 | 说明 | 
|---|
| :set spell spelllang=en_us | 启用美式英语拼写检查 | 
| ]s | 移动到光标后下一个拼写错误的单词 | 
| [s | 移动到光标前上一个拼写错误的单词 | 
| z= | 为光标下或光标后的单词建议拼写 | 
| zg | 将单词添加到拼写列表 | 
| zw | 将单词标记为错误拼写 | 
| zu/C-X (插入模式) | 从拼写文件中为光标下的错误单词建议替代词 | 
参见 :help spell
  相关链接
  
 
 本文采用 CC BY-NC-SA 4.0方式授权。 
 转载请注明出处和本文链接,说明是否进行修改,不得用于商业用途,使用相同方式共享。