众所周知,所有的Linux系统都会内置vi文本编辑器。Vim具有程序编辑的能力,可以看做是Vi的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。比如对某些配置文件进行简单的修改时,不需要从服务器上将配置文件下载下来进行修改,然后再上传。
1. vi 和vim的三种常见模式
1.1 正常模式
在正常模式下,我们可以使用快捷键。
以vim打开一个文件就直接进入一般模式了(这是默认的模式)。在这个模式中,你可以使用【上下左右】按键来移动光标,你可以使用【删除字符】或【删除整行】来处理文件内容,也可以使用【复制、粘贴」】来处理你的文件数据。
1.2 插入模式/编辑模式
在模式下,程序员可以输入内容。
按下i、I、o、O、a、A、R等任何一个字母之后才会进入编辑模式,一般来说按 i 即可
1.3 命令行模式
在这个模式当中,可以提供你相关指令,完成读取、存盘、替换、离开 vim 、显示行号等的动作则是在此模式中达成的!
以下是三种模式之间的转换

2. 快捷键的使用归纳
2.1 一般模式常用操作
在windows里面,编辑一个文档习惯用复制、粘贴、剪切、查找等操作来处理文档
| 快捷操作 | 功能 |
|---|
| yy | 复制光标所在的那一行 |
| yny(nyy) | n表示整数,也就是从光标所在行开始,复制n行,比如【y10y】就是复制10行 |
| y$ | 复制的内容是从光标所在位置开始,直到该行的末尾结束 |
| y^ | 复制的内容是从光标所在行开始直到光标的前一个字符结束 |
- 粘贴操作(p),把光标移到想复制的位置按p即可
- 撤回操作(u)
- 删除操作(dd),与复制操作类似
| 快捷操作 | 功能 |
|---|
| dd | 删除光标所在的那一行 |
| dnd(ndd) | 删除n行,比如【10dd】就是删除10行 |
| d$ | 删除的内容是从光标所在位置开始,直到该行的末尾结束 |
| d^ | 删除的内容是从光标所在行开始直到光标的前一个字符结束 |
| 快捷操作 | 功能 |
|---|
| x | 小写x,剪切光标所在位置的字符,剪切后字符会前移,然后可以用p进行粘贴 |
| X | 大写X,剪切光标所在位置之前的字符,有点类似windows里面的删除键,同样可以用p粘贴 |
| 快捷操作 | 功能 |
|---|
| r | 小写r,输入r后仍在正常模式,继续输入字符会替换光标当前位置的字符,也就是进行单个替换 |
| R | 大写X,输入R后会进入编辑模式,继续输入字符会依次连续替换光标所在位置的字符,连续替换多个 |
| 快捷操作 | 功能 |
|---|
| w | w移动到下一个词的开头 |
| e | e移动到下一个词的结尾 |
| b | b移动到上一个词的开头 |
| yw | 复制一个单词,其实是复制从光标当前位置开始到光标后第一个符号结束(如果这个符号是空格会连将空格一起复制) |
| dw | dw同理,删除一个单词 |
| 快捷操作 | 功能 |
|---|
| G | 大写G,移动到文档最末行 |
| gg | 大写G,移动到文档首行 |
| n+G | 数字n加大写的G,移动到指定行的行首,搭配命令“:set nu”设置行号使用较好 |
| shift+6(^) | 移动到当前行的行首 |
| shift=4($) | 移动到当前行的行末 |
2.2 编辑模式常用操作
编辑模式下主要是对文本进行追加等操作,与windows里面操作差别不大,但是编辑模式的进入方式有很多,不同字母大小写,功能不一样:
| 按键 | 功能 |
|---|
| i | 当前光标前插入 |
| I | 当前光标所在行最前端插入 |
| a | 当前光标后插入 |
| o | 当前光标行的下一行插入,类似先回车后插入 |
| A | 当前光标所在行最后 |
| O | 当前光标行的上一行插入,会新建一行在插入 |
2.3 命令模式常用操作
命令模式下主要是用来进行文本的保存、退出、查找等操作
| 命令 | 功能 |
|---|
| :w | 保存文件,不会退出 |
| :q | 退出 |
| :wq | 保存并退出 |
| :q! | 不保存文件,强制退出 |
| :set nu | 显示行号 |
| :set nonu | 关闭行号 |
| :s/old/new | :%s是替换操作,这里的意思是将当前行的第一个old替换为new |
| :s/old/new/g | 将当前行的所有old替换为new |
| :%s/old/new | 将文件中每行的第一个old替换为new |