Vim 编辑器完全指南:从入门到高效操作
Vim 是 Linux 系统中最强大的文本编辑器之一,以其高效的操作模式和丰富的功能著称。掌握 Vim 的核心在于理解其三种工作模式(命令模式、插入模式、末行模式)及模式间的切换逻辑。本文将系统讲解 Vim 的使用技巧,帮助你从入门到精通。
Vim 三种核心模式
Vim 的强大之处在于其模式化设计,不同模式下的操作逻辑不同,熟练切换是高效使用的基础:
| 模式 | 进入方式 | 主要功能 | 退出方式(进入命令模式) |
|---|---|---|---|
| 命令模式 | 启动 Vim 后默认进入 | 光标移动、文本删除 / 复制 / 粘贴 | 无需退出(默认模式) |
| 插入模式 | 命令模式下按 i/a/o 等键 |
输入文本 | 按 Esc 键 |
| 末行模式 | 命令模式下按 : 键 |
保存 / 退出、查找替换、配置等 | 按 Esc 键或执行命令后自动返回 |
命令模式:高效操作的核心
命令模式是 Vim 的 “指挥中心”,几乎所有非输入操作都在此完成。以下是常用操作分类:
1. 光标移动
(1)基础移动(单字符 / 行)
h:向左移动 1 字符l:向右移动 1 字符j:向下移动 1 行k:向上移动 1 行0(数字 0):跳转到行首第一个字符$:跳转到行尾最后一个字符
(2)快速移动(单词 / 段落)
w:向后移动 1 个单词(以空格 / 标点分隔)b:向前移动 1 个单词^:跳转到行首第一个非空白字符gg:跳转到文件首行G(Shift+g):跳转到文件尾行nG(如5G):跳转到第 n 行Ctrl+f:向下翻一页Ctrl+b:向上翻一页Ctrl+d:向下翻半页Ctrl+u:向上翻半页
(3)屏幕定位
H:将光标移到当前屏幕顶部M:将光标移到当前屏幕中间L:将光标移到当前屏幕底部
2. 文本删除
x:删除光标所在字符nx(如3x):删除光标后 n 个字符dw:删除从光标开始到单词结尾的内容(含空格)d$:删除从光标到行尾的内容dd:删除光标所在行(剪切功能,可粘贴)ndd(如5dd):删除从光标开始的 n 行dG:删除从光标到文件尾的所有内容D:删除从光标到行尾的内容(等价于d$)
3. 复制与粘贴
yy:复制光标所在行nyy(如3yy):复制从光标开始的 n 行yw:复制从光标到单词结尾的内容y$:复制从光标到行尾的内容p(小写):在光标下方粘贴复制的内容P(大写):在光标上方粘贴复制的内容
4. 撤销与重做
u:撤销上一步操作Ctrl+r:重做被撤销的操作(反撤销)
5. 替换与缩进
r:替换光标所在字符(按r后输入新字符)R:进入连续替换模式(从光标处开始替换,按Esc退出)>>:将当前行向右缩进(增加缩进)<<:将当前行向左缩进(减少缩进)n>>(如5>>):将从光标开始的 n 行向右缩进
插入模式:文本输入
在命令模式下按以下键进入插入模式,开始输入文本:
| 按键 | 功能描述 |
|---|---|
i |
在光标前插入文本 |
a |
在光标后插入文本(追加) |
I |
在当前行首插入文本(忽略行首空格) |
A |
在当前行尾插入文本 |
o |
在光标下一行插入新行并进入插入模式 |
O |
在光标上一行插入新行并进入插入模式 |
退出插入模式:按 Esc 键返回命令模式。
末行模式:高级操作与配置
命令模式下按 : 键进入末行模式,光标会跳到屏幕底部,可输入命令执行。
1. 文件操作(保存 / 退出)
:w:保存当前文件(不退出):w 文件名:另存为新文件(如:w new.txt):w!:强制保存(当文件为只读时):q:退出 Vim(需先保存修改):q!:强制退出,不保存修改:wq或:x:保存并退出:wq!:强制保存并退出:e!:放弃所有修改,恢复到上次保存状态
2. 查找与替换
(1)查找文本
/关键词:从光标处向下查找关键词(如/error)?关键词:从光标处向上查找关键词(如?success)n:跳转到下一个匹配结果N:跳转到上一个匹配结果:set ic:开启忽略大小写查找(ic= ignore case):set noic:关闭忽略大小写
(2)替换文本
:s/旧内容/新内容:替换当前行第一个匹配的 “旧内容”:s/旧内容/新内容/g:替换当前行所有匹配的 “旧内容”(g= global):n1,n2s/旧内容/新内容/g:替换从 n1 行到 n2 行的所有匹配(如:3,10s/name/user/g):%s/旧内容/新内容/g:替换全文所有匹配(%表示所有行):%s/旧内容/新内容/gc:替换全文并逐处确认(c= confirm)
3. 显示与配置
:set nu:显示行号(nu= number):set nonu:隐藏行号:set list:显示特殊字符(Tab 显示为^I,换行符显示为$):set nolist:隐藏特殊字符:set wrap:自动换行(默认开启):set nowrap:关闭自动换行:set cursorline:高亮光标所在行
4. 执行 Shell 命令
在末行模式下,通过 :!命令 可执行 Shell 命令,无需退出 Vim:
:!ls:查看当前目录文件:!pwd:显示当前路径:!grep "error" log.txt:在外部文件中查找关键词
实用技巧与进阶操作
1. 多文件编辑
:e 文件名:在当前窗口打开新文件(如:e config.ini):split 文件名:水平分割窗口并打开新文件(split可缩写为sp):vsplit 文件名:垂直分割窗口并打开新文件(vsplit可缩写为vsp)Ctrl+w+w:在多个窗口间切换
2. 权限不足时保存文件
普通用户编辑系统文件(如 /etc/hosts)时,可能因权限不足无法保存,可使用以下命令强制保存:
1 | :w !sudo tee % |
原理:将当前编辑的内容通过管道
|传给sudo tee,%表示当前文件名,实现以 root 权限保存。这个命令是
:w ![cmd]将文件buffer作为输入交给shell命令处理,此时cmd是sudo tee %,sudo是用来获取管理员权限,tee是作为管道将当前缓存保存到某个文件中,%是vim的一个read only寄存器,存储着当前文件的绝对路径。连起来的意思就是把当前编辑的文件内容作为标准输入并输入到当前文件中
3. 录制宏(批量操作)
宏可录制一系列操作并重复执行,适合批量处理:
- 按
q+字母开始录制(如qa,用a作为宏名) - 执行需要重复的操作(如删除行首空格、替换文本)
- 按
q结束录制 - 按
@+字母执行宏(如@a),按n@a执行 n 次(如10@a)