基本按键说明
编辑模式
| 操作 | 说明 |
|---|---|
| i 与 I | i 为光标所在的位置开始编辑,I 为当前行的首字符处开始编辑(i 和 I 是 Insert 之意) |
| a 与 A | a 为光标所在的下一个字符处开始编辑,A 为当前后的最后一个字符处开始编辑(a 和 A 有 Append 之意) |
| o 和 O | o 在当前行之后新建一行,O在当前行之前新建一行(Open New Line) |
光标移动
| 操作 | 说明 |
|---|---|
| 0 | 数字0,将光标移动到当前行行首(行首非制表符) |
| $ | 将光标移动到当前行行尾(行尾非制表符) |
| H | 将光标移动到当前屏幕第一行行首 |
| M | 将光标移动到当前屏幕中间那一行行首 |
| L | 将光标移动到当前屏幕最后一行行首 |
| G | 将光标移动着文件最后一行 |
| nG | n 为数字,将光标移动到文件的指定行。如 20G 就是移动到第20行的意思。 |
| gg | 将光标移动到文件的第一行,相当于 1G |
| n<Enter> | 将光标向下移动 n 行(输入数字后点击回车键) |
删除粘贴与复制
| 操作 | 说明 |
|---|---|
| x 与 X | 在一行当中,x 为从光标开始向后删除,X 为从光标开始向前删除 |
| nx 与 nX | n 为数字,nx 为从光标开始向后删除 x 个字符,nX 为先前删除 n 个字符 |
| dd | 剪切光标所在的那一整行 |
| ndd | n 为数字,剪切光标所在行到向下 n 行。如 10dd 表示从光标开始所在的行向下剪切 10 行。 |
| d1G | 剪切光标所在的行一直到文件第一行 |
| dG | 剪切光标所在的行一直到文件最后一行 |
| d0 | 在一行中,剪切该行的第一个字符一直到光标所在的字符 |
| d$ | 在一行中,从光标所在的字符一直剪切到该行的最后一个字符 |
| yy | 复制当前行(光标所在行) |
| nyy | n 为数字,从当前行向下复制 n 行 |
| y1G | 复制文件首行到当前行的所有数据 |
| yG | 复制当前行一直到文件最后一行的所有数据 |
| y0 | 在一行中,从该行的第一个字符开始复制,一直到光标所在字符 |
| y$ | 在一行中,从光标所在字符一直复制到该行的最后一个字符 |
| p 与 P | p 为在当前行的下一行开始粘贴,P 为当前行的上一行开始粘贴(配置 dd 使用) |
| J | 将光标所在行与下一行的数据合并成一行 |
| c | 重复删除多个数据,如向下删除 10 行(10cj) |
| u | 撤销(恢复) |
| Ctrl + r | 重做上一个操作 |
查找和替换
| 操作 | 说明 |
|---|---|
| /word | 从光标开始向下查找名为 word 的字符 |
| ?word | 从光标开始向上查找名为 word 的字符 |
| n | 英文键 n,重复查找前一个字符。比如 /word 再点 n 键就是继续向下查找 |
| N | 英文件 N,与 n 正好相反,是反向查找的意思。如 /word 再点 N 就是向上查找的意思 |
:s/oldword/newword | 将当前行匹配到的第一个 oldword 字符替换为 newword |
:s/oldword/newword/g | 将当前行匹配到的所有 oldword 字符替换为 newword |
:%s/oldword/newword | 将文件中的每行匹配到的第一个 oldword 替换为 newword(全局替换每行第一个 oldword) |
:%s/oldword/newword/g | 将文件中的每行匹配到的所有 oldword 替换为 newword(全局替换每行所有 oldword) |
:n1,n2s/oldword/newword | n 是数字,将第 n1 到 n2 行之间的每一行匹配到的第一个 oldword 替换为 newword |
:n1,n2s/oldword/newword/g | n 是数字,将第 n1 到 n2 行之间的每一行匹配到的所有 oldword 替换为 newword |
:1,$s/oldword/newword | :%s/oldword/newword 的另一种写法 |
:1,$s/oldword/newword/g | :%s/oldword/newword/g 的另一种写法 |
:s/oldword/newword/c | c 是确认的意思,在替换之前显示提示符进行确认替换 |
保存与退出
| 操作 | 说明 |
|---|---|
| :w | 保存 |
| :w! | 强制保存 |
| :q | 退出 vim |
| :q! | 强制退出 vim |
| :wq | 保存并退出 vim |
| :wq! | 强制保存并退出 vim |
| ZZ | 若文件没有修改则不保存。若文件已修改则保存并退出 vim |
| :r [filename] | 在 vim 中将读取 filename 文件数据,也是将 filename 数据追加到光标所在行后面的意思 |
| :n1,n2 w [filename] | 将文件中 n1 到 n2 行之间的数据保存到新文件 filename 中 |
| :! CMD | 暂时退出 vim 到命令行中执行 CMD 命令,如 :! ls ~/home 就是在 vim 中查看 /home 信息 |
| :set nu | 显示行号 |
| :set nonu | 隐藏行号 |