Vim 入门指南
光标移动
| 操作 | 描述 |
|---|---|
| h,j,k,l | 依次是左,上,右,下 |
| w | 向后移动动到单词开头 |
| e | 向后移动到单词末尾 |
| b | 从当前光标位置移动到上一个单词开头 |
| ge | 从当前光标位置移动到上一个单词末尾 |
| 数字 + w/e/b | 向前/后移动指定数字的单词 |
| 0 | 移动到行首 |
| $ | 移动到行尾 |
| gg | 移动到文件开头 |
| G | 移动到文件结尾 |
| 数字 + G | 移动到指定数字行 |
| Ctrl+b | 屏幕往“后”移动一页。(b:backwards) |
| Ctrl+f | 屏幕往“前”移动一页。(f:forwards) |
| Ctrl+u | 屏幕往“后”移动半页。(u:up) |
| Ctrl+d | 屏幕往“前”移动半页。(d:down) |
文本编辑
| 操作 | 描述 |
|---|---|
| . | 可重复前一次操作 |
| i | 在光标所在位置之前插入字符 |
| I | 在光标所在行的开头插入字符 |
| a | 在光标所在位置之后插入字符 |
| A | 在光标所在行末尾插入字符 |
| o | 在光标所在行下一行插入字符 |
| O | 在光标所在行上一行插入字符 |
删除(剪切),复制,粘贴与恢复
| 操作 | 描述 |
|---|---|
| x | 删除光标所在位置的字符 |
| X | 删除光标左侧位置字符 |
| dw | 删除至下一个单词起始处,不包括下一个单词的第一个字符 |
| de | 删除至当前单词末尾,包括最后一个字符 |
| d0 | 删除至当前行开头 |
| d$,D | 删除至当前行末尾 |
| dd | 删除当前行 |
| 数字+ dd | 删除指定数字的行数 |
| u | 撤销最后执行的命令 |
| U | 撤销对整行的修改 |
| CTRL-R | 撤销以前的撤销命令,恢复之前的操作结果 |
| v | 进入字符可视化模式 |
| V | 进入行可视化模式 |
| Ctrl+v | 进入块可视化模式 (I/A 进入插入模式,可以进行多光标操作,esc退出后生效) |
| yy | 复制当前行 |
| 数字 + yy | 复制指定行数 |
| p | 粘贴 |
替换与更改
| 操作 | 描述 |
|---|---|
| r[CHAR] | 输入 r 和一个字符替换光标所在位置的字符 |
| R | 连续替换多个字符,与插入模式类似,不过每个输入的字符会替代光标当前字符,与键盘使用了 insert 键进入改写模式的情况类似 |
| cw | 更改文本直到该单词末尾 |
| ce | 更改文本直到下一单词开始 |
| c$ | 更改文本直到行末 |
| c [数字] motion | 基本格式 |
搜索与修改
| 操作 | 描述 |
|---|---|
| /[STRING] | 正向查找string表示的字符串 |
| ?[STRING] | 逆向查找string表示的字符串 |
| CTRL-O \ N | 回到前一个位置 |
| CTRL-I \ n | 到下一个位置 |
| :s/old/new | 在光标所在行第一次出现的 old 表示的字符串替换为新的字符串 new |
| :s/old/new/g | 在光标所在行替换所有出现的 old 所表示的字符串替换为新的字符串 new |
| :#,#s/old/new/g | 在两行内替换所有的字符串 old 为新的字符串 new |
| :%s/old/new/g | 在文件内替换所有的字符串 old 为新的字符串 new |
| :%s/old/new/gc | 进行全文替换时询问用户确认每个替换 |
其他
| 操作 | 描述 |
|---|---|
| F[CHAR] | 光标移动到上一个 char 所指字母所在位置 |
| f[CHAR] | 光标移动到下一个 char 所指字母所在位置 |
| F * | 光标移动到当前光标所指单词相同的下一个位置 |
| F # | 光标移动到当前光标所指单词相同的上一个位置 |
| CTRL-g/G | 显示当前编辑文件中当前光标所在行位置以及文件状态信息 |
| % | 可查找匹配对的括号) \ ] \ } |
| :![COMMAND] | 执行command所代表的外部命令 |
| :r FILENAME | 提取磁盘文件 FILENAME 并将其插入到当前文件光标当前位置后 |
| :r !command | 读取command命令的输出插入到当前文件光标当前位置后 |
| :help <回车> / 键 | 帮助 |
| :split / :vsplit | 分屏 |
| CTRL-W | 窗口切换 |
| :reg | 查看剪切板 |
| "np | 粘贴剪切板内容(n表示剪切板的序号,【0-12】)eg: "5p |
| :set invlist | 显示不可见字符 |