1. 一般模式
打开文件就直接进入一般模式(默认就是一般模式),可执行删除、复制、粘贴等操作,但无法编辑。
2. 编辑模式
按下“i, I, o, O, a, A, r, R”等任何一个字母进入编辑模式,[Esc]键退出编辑模式
3. 命令行模式
在一般模式中,输入“: / ?”3个中的任何一个,就可以进入命令模式
4. 按键说明
| 移动光标的方法(一般模式下) | |
|---|---|
| h或向左键 | 光标向左移动一个字符 |
| j或向下键 | 光标向下移动一个字符 |
| k或向上键 | 光标向上移动一个字符 |
| l或向右键 | 光标向右移动一个字符 |
| 前面加数字,则移动n个字符,比如30j向下移动30行 | |
| [Ctrl]+f | 屏幕向下移动一页(常用) |
| [Ctrl]+b | 屏幕向上移动一页(常用) |
| [Ctrl]+d | 屏幕向下移动半页 |
| [Ctrl]+u | 屏幕向上移动半页 |
| + | 光标移动到非空格符的下一行 |
| - | 光标移动到非空格符的上一行 |
| n<space> | n为数字,光标会向右移动这一行的n个字符 |
| 0 | 移动到这一行的最前面字符处(常用) |
| $ | 移动到这一行的最后一个字符处(常用) |
| H | 光标移动到屏幕最上方那一行的第一个字符 |
| M | 光标移动到屏幕中央那一行的第一个字符 |
| L | 光标移动到屏幕最下方那一行的第一个字符 |
| G | 移动到这个文件的最后一行(常用) |
| nG | n为数字,移动到这个文件的第n行 |
| gg | 移动到这个文件的第一行(常用) |
| N[Enter] | n为数字,光标向下移动n行(常用) |
| /word | 向下寻找一个名称为word的字符串(常用) |
| ?word | 向上寻找一个名称为word的字符串 |
| n | 重复前一个查找的操作 |
| N | 反向进行前一个查找操作 |
| :n1,n2s/word1/word2/g | n1与n2为数字,在第n1与n2行之间寻找word1,并将这个字符中替换为word2(常用) |
| :1,$s/word1/word2/g | 在第1行和最后一行之间寻找word1,并将这个字符串替换为word2(常用) |
| :1,$s/word1/word2/gc | 在第1行和最后一行之间寻找word1,并将这个字符中替换为word2,且在替换前给出用户提示(常用) |
| x,X | x为向后删除一个字符,X为向前删除一个字符(常用) |
| nx | n为数字,向后删除n个字符 |
| dd | 删除光标所在的一整行(常用) |
| ndd | n数字,删除光标所在的向下n行(常用) |
| d1G | 删除光标所在到第一行的所有数据 |
| dG | 删除光标所在到最后一行的所有数据 |
| d$ | 删除光标所在处到该行的最后一个字符 |
| d0 | 删除光标所在处到该行的最前面一个字符 |
| yy | 复制光标所在的那一行(常用) |
| nyy | n为数字,复制光标所在向下n行(常用) |
| y1G | 复制光标所在行到第一行的所有数据 |
| yG | 复制光标所在行到最后一行的所有数据 |
| y0 | 复制光标所在的那个字符到该行行首的的所有数据 |
| y$ | 复制光标所在的那个字符到该行行尾的所有数据 |
| p,P | p为将已复制的数据在光标下一行粘贴,P则为粘贴在光标的上一行(常用) |
| J | 将光标所在行与下一行的数据结合成同一行 |
| c | 重复删除多个数据 |
| u | 复原前一个操作(常用) |
| [Ctrl]+r | 重做上一个操作(常用) |
| . | 重复前一个操作(常用) |
| 一般模式切换到编辑模式 | |
|---|---|
| i, I | i为从目前光标所在处插入,I为在目前所有行的第一个非空字符插入(常用) |
| a, A | a为从目前光标所在的下一个字符插入,A为从光标所在行的最后一个字符插入(常用) |
| o, O | o为在目前光标所在的下一行处插入新的一行,O为在目前光标所在处的上一行插入新的一行(常用) |
| r, R | r为只替换光标所在的那一个字符一次,R会一直替换光标所在的文字(常用) |
| [Esc] | 退出编辑模式(常用) |
| 命令行的使用 | |
|---|---|
| :w | 保存(常用) |
| :w! | 强制保存 |
| :q | 退出(常用) |
| :q! | 强制退出 |
| :wq | 保存并离开 |
| ZZ | 若文件没有改动,则不保存离开,若文件已经改动,则保存离开 |
| :w[filename] | 将编辑的数据保存成另一个文件 |
| :r[filename] | 在编辑的数据中,读入另一个文件的数据(在光标所在行后面追加) |
| :n1,n2 w [filename] | 将n1到n2的内容保存成filename这个文件 |
| :! command | 暂时离开vim到命令模式下执行command的显示结果。例如:! ls /home即可在vim当中查看/home下面以ls输出的文件信息 |
| :set nu | 显示行号 |
| :set nonu | 取消显示行号 |