在linux下,vim编辑器无疑是个神器。在全命令行下编辑时,为了提高效率,快捷键就变得必不可少。在本文中,主要介绍了vim的快捷键。
vim编辑器的三种状态模式

启动与退出
| 命令 | 释意 |
|---|
| $vim | 直接进入编辑环境 |
| $vim filename | 进入编辑环境并打开文件 |
| :q | 退出vim编辑环境 |
| :w | 保存对文件的修改 |
| :w filename | 将文件另存为filename |
| :wq | 保存并退出 |
| :q! | 放弃更改过的内容并强制退出 |
光标移动操作
光标移动
翻页
| 命令 | 释义 |
|---|
| ctrl + f | 向下翻整页 |
| ctrl + b | 向上翻整页 |
| ctrl + u | 向上翻半页 |
| ctrl + d | 向下翻半页 |
行内移动光标
| 命令 | 释义 |
|---|
| ^ | 将光标跳转到本行的行首字符 |
| $ | 将光标跳转到本行的行尾字符 |
文件内跳转
| 命令 | 释义 |
|---|
| :set nu | 在编辑器中显示行号 |
| :set nonu | 取消编辑器中的行号显示 |
| gg(1G) | 跳转到文件的首行 |
| G | 跳转到文件末尾行 |
| :n | 跳转到文件的第n行 |
编辑操作
进入插入模式
| 命令 | 释义 |
|---|
| i | 在当前光标处进入插入状态 |
| I | 在行首进入插入状态 |
| a | 在当前光标后进入插入状态 |
| A | 在行末进入插入状态 |
| o | 在当前行的下一行插入新行,光标移动到新行行首,进入插入状态 |
| O | 在当前行的上一行插入新行,光标移动到新行行首,进入插入状态 |
| c(n)w | 删除当前光标到单词尾部的字符,并进入插入状态 |
| c$/C | 删除当前光标之后(包括光标上的字符)到行末的字符,并进入插入状态 |
| c^ | 删除当前光标之前(不包括光标上的字符)到行首的字符,并进入插入状态 |
删除操作
| 命令 | 释义 |
|---|
| x | 删除光标处的单个字符 |
| (n)dd | 删除光标所在行(包括光标所在行)向下n行 |
| :3,5 d | 删除3到5行的内容 |
| daw | 删除光标所在处的一个单词 |
| dw | 删除当前字符到单词尾部(包括空格)的所有字符 |
| de | 删除当前字符到单词尾部(不包括单词尾部的空格)的所有字符 |
| d$ | 删除当前字符到行尾的所有字符 |
| d^ | 删除当前字符到行首的所有字符 |
| J | 合并当前行和下一行的内容。删除光标所在行行尾的换行符 |
拷贝和粘贴
| 命令 | 释义 |
|---|
| (n)yy | 复制当前整行的内容到缓冲区 |
| :3,4 co(m) 9 | 复制(剪切)3-6行,到12行处 |
| p | 读取缓冲区中的内容,并复制带光标当前的位置(不覆盖文件已有的内容) |
撤销与恢复
| 命令 | 释义 |
|---|
| u | 取消最近一次的操作,并恢复操作结果;可以多次使用u命令恢复已进行的多步操作 |
| U | 取消对当前整行进行的所有操作 |
| ctrl + r | 对使用u命令撤销的操作进行恢复 |
查找与替换
查找
| 命令 | 释义 |
|---|
| /word | 从上而下在文件中查找字符串“word” |
| ?word | 从下而上在文件中查找字符串“word” |
| n | 定位下一个被匹配到的字符串 |
| N | 定位上一个被匹配到的字符串 |
替换
| 命令 | 释义 |
|---|
| r | 替换当前光标处的字符,仅替换一次 |
| R | 进入替换模式,可替换多次 |
| :s/old/new | 将当前行中查找到的第一个字符“old”串替换为“new” |
| :s/old/new/g | 将当前行中查找到的所有字符串“old”替换为“new” |
| :#,# s/old/new/g | 将行号“#,#”范围内替换所有字符串“old”为“new” |
| :% s/old/new/g | 在整个文件范围内替换所有的字符串“old”为“new” |
选中
| 命令 | 释义 |
|---|
| v | 逐个字符选择文本 |
| V | 逐行选择文本 |
| ctrl +v | 按照块的方式选择文本 |