Vim编辑器使用教程
前言
Vim 是 Linux 终端里非常常用的文本编辑器。平时修改配置文件、写脚本、在服务器或 Docker 容器里临时改代码,经常都会用到它。
刚开始接触 Vim 时,最容易卡住的地方不是“怎么高效编辑”,而是“怎么进入编辑、怎么保存、怎么退出”。所以这篇文章先从最基本的生存命令开始,再逐步整理移动、复制粘贴、查找替换、多文件编辑和常用配置。
一、安装 Vim
在 Ubuntu / Debian 系统中安装:
1 | sudo apt update |
查看版本:
1 | vim --version |
如果只是临时使用,系统里也可能已经有 vi:
1 | vi 文件名 |
不过日常更推荐安装并使用 vim。
二、打开和创建文件
打开一个已有文件:
1 | vim test.txt |
如果 test.txt 不存在,Vim 会在保存时创建这个文件。
打开某个系统配置文件:
1 | sudo vim /etc/hosts |
打开后,默认处于普通模式,此时直接敲键盘不会像普通编辑器一样输入文字。
三、理解 Vim 的几种模式
Vim 最重要的特点是“模式编辑”。常用模式有下面几种:
| 模式 | 作用 | 进入方式 | 退出方式 |
|---|---|---|---|
| 普通模式 | 移动光标、复制、删除、保存退出 | 打开文件后默认进入 | 按 i、a、o 等进入插入模式 |
| 插入模式 | 正常输入文字 | 在普通模式按 i、a、o |
按 Esc 回到普通模式 |
| 命令模式 | 保存、退出、查找替换等 | 普通模式按 : |
执行命令后自动返回普通模式 |
| 可视模式 | 选择一段文本 | 普通模式按 v、V、Ctrl + v |
按 Esc 回到普通模式 |
最常用的流程可以记成:
1 | 普通模式 -> 按 i -> 插入模式 -> 输入内容 -> 按 Esc -> 普通模式 -> 输入 :wq 保存退出 |
四、最重要的保存和退出
这些命令都需要先按 Esc 回到普通模式,再输入 : 进入命令模式。
| 功能 | 命令 |
|---|---|
| 保存文件 | :w |
| 退出 Vim | :q |
| 保存并退出 | :wq |
| 保存并退出 | :x |
| 不保存强制退出 | :q! |
| 强制保存 | :w! |
刚开始最常用的是:
1 | :wq |
如果改乱了,不想保存:
1 | :q! |
五、进入插入模式
在普通模式下,可以通过下面这些按键进入插入模式:
| 按键 | 作用 |
|---|---|
i |
在当前光标前插入 |
a |
在当前光标后插入 |
I |
在当前行开头插入 |
A |
在当前行末尾插入 |
o |
在当前行下方新建一行并插入 |
O |
在当前行上方新建一行并插入 |
最开始只记两个就够:
i:开始编辑当前内容。o:新开一行继续写。
六、移动光标
Vim 中可以用方向键移动,也可以用 h、j、k、l 移动:
| 按键 | 方向 |
|---|---|
h |
左 |
j |
下 |
k |
上 |
l |
右 |
常用移动命令:
| 功能 | 命令 |
|---|---|
| 移动到行首 | 0 |
| 移动到行尾 | $ |
| 移动到文件第一行 | gg |
| 移动到文件最后一行 | G |
| 移动到第 20 行 | 20G 或 :20 |
| 向后移动一个单词 | w |
| 向前移动一个单词 | b |
| 移动到当前单词结尾 | e |
翻页操作:
| 功能 | 命令 |
|---|---|
| 向下翻半屏 | Ctrl + d |
| 向上翻半屏 | Ctrl + u |
| 向下翻一屏 | Ctrl + f |
| 向上翻一屏 | Ctrl + b |
七、删除、修改和撤销
常用删除命令:
| 功能 | 命令 |
|---|---|
| 删除当前字符 | x |
| 删除当前行 | dd |
| 删除 3 行 | 3dd |
| 删除当前光标到行尾 | D |
| 删除当前单词 | dw |
| 删除当前光标到单词结尾 | de |
常用修改命令:
| 功能 | 命令 |
|---|---|
| 修改当前字符 | r 后接新字符 |
| 删除当前字符并进入插入模式 | s |
| 删除当前行并进入插入模式 | cc |
| 删除当前光标到行尾并进入插入模式 | C |
撤销和重做:
| 功能 | 命令 |
|---|---|
| 撤销上一步 | u |
| 重做 | Ctrl + r |
如果误删了一行,可以按:
1 | u |
八、复制、剪切和粘贴
在 Vim 里,删除操作很多时候也可以理解成“剪切”。
| 功能 | 命令 |
|---|---|
| 复制当前行 | yy |
| 复制 3 行 | 3yy |
| 剪切当前行 | dd |
| 粘贴到当前行下方 | p |
| 粘贴到当前行上方 | P |
例如复制当前行并粘贴到下一行:
1 | yy |
剪切当前行并粘贴到其他位置:
1 | dd |
九、可视模式选择文本
普通模式下按 v 进入字符选择,按 V 进入整行选择。
| 功能 | 命令 |
|---|---|
| 字符选择 | v |
| 整行选择 | V |
| 块选择 | Ctrl + v |
| 复制选中内容 | y |
| 删除选中内容 | d |
| 粘贴 | p |
如果想复制一整段内容:
- 按
V进入整行选择。 - 使用
j/k选择多行。 - 按
y复制。 - 移动到目标位置后按
p粘贴。
十、查找和替换
1. 查找文本
向下查找:
1 | /关键词 |
向上查找:
1 | ?关键词 |
查找后继续跳转:
| 功能 | 命令 |
|---|---|
| 下一个匹配 | n |
| 上一个匹配 | N |
2. 替换文本
替换当前行第一个匹配:
1 | :s/旧内容/新内容/ |
替换当前行所有匹配:
1 | :s/旧内容/新内容/g |
替换全文所有匹配:
1 | :%s/旧内容/新内容/g |
替换全文并逐个确认:
1 | :%s/旧内容/新内容/gc |
其中:
%表示全文。s表示 substitute,也就是替换。g表示当前行内所有匹配项。c表示 confirm,每次替换前确认。
十一、显示行号和常用临时设置
在 Vim 中可以临时开启行号:
1 | :set number |
关闭行号:
1 | :set nonumber |
开启搜索高亮:
1 | :set hlsearch |
关闭搜索高亮:
1 | :nohlsearch |
开启自动缩进:
1 | :set autoindent |
显示当前文件名和状态:
1 | :f |
十二、编辑多个文件
一次打开多个文件:
1 | vim file1.txt file2.txt |
查看缓冲区列表:
1 | :ls |
切换到下一个文件:
1 | :bn |
切换到上一个文件:
1 | :bp |
打开另一个文件:
1 | :e another.txt |
保存全部文件:
1 | :wa |
退出全部文件:
1 | :qa |
保存并退出全部文件:
1 | :wqa |
十三、分屏编辑
横向分屏打开文件:
1 | :split file.txt |
也可以简写:
1 | :sp file.txt |
纵向分屏打开文件:
1 | :vsplit file.txt |
也可以简写:
1 | :vsp file.txt |
分屏后常用快捷键:
| 功能 | 命令 |
|---|---|
| 切换到左侧窗口 | Ctrl + w 后按 h |
| 切换到下方窗口 | Ctrl + w 后按 j |
| 切换到上方窗口 | Ctrl + w 后按 k |
| 切换到右侧窗口 | Ctrl + w 后按 l |
| 关闭当前窗口 | :q |
十四、没有权限保存怎么办
有时打开系统文件时忘了加 sudo:
1 | vim /etc/hosts |
编辑完保存时可能提示没有权限。可以在 Vim 中执行:
1 | :w !sudo tee % |
执行后输入当前用户密码,文件就会通过 sudo tee 写回去。
这个命令的含义是:
:w:把当前缓冲区内容写出。!sudo tee %:把内容交给外部命令sudo tee。%:表示当前文件名。
保存成功后,如果 Vim 提示文件已改变,可以输入:
1 | :e! |
重新加载当前文件。
十五、配置 vimrc
如果希望每次打开 Vim 都自动显示行号、开启语法高亮,可以编辑用户配置文件:
1 | vim ~/.vimrc |
一个简单的配置示例:
1 | " 显示行号 |
保存后重新打开 Vim 即可生效。
如果不想使用鼠标,可以删除:
1 | set mouse=a |
十六、常用命令速查
| 场景 | 命令 |
|---|---|
| 打开文件 | vim 文件名 |
| 进入插入模式 | i |
| 退出插入模式 | Esc |
| 保存 | :w |
| 退出 | :q |
| 保存并退出 | :wq |
| 不保存退出 | :q! |
| 撤销 | u |
| 重做 | Ctrl + r |
| 删除当前行 | dd |
| 复制当前行 | yy |
| 粘贴 | p |
| 查找 | /关键词 |
| 全文替换 | :%s/旧内容/新内容/g |
| 显示行号 | :set number |
| 跳到文件开头 | gg |
| 跳到文件末尾 | G |
| 跳到第 20 行 | 20G |
十七、推荐练习顺序
刚开始不要一口气背太多命令,可以按下面顺序练:
- 用
vim test.txt打开文件。 - 按
i输入几行文字。 - 按
Esc回到普通模式。 - 用
:w保存。 - 用
dd删除一行,再用u撤销。 - 用
yy复制一行,再用p粘贴。 - 用
/关键词查找内容。 - 用
:%s/旧内容/新内容/gc练习确认替换。 - 最后用
:wq保存退出。
熟悉这些以后,日常修改配置文件、编辑脚本、在服务器里处理文本基本就够用了。
总结
Vim 的学习重点不是一次记住所有快捷键,而是先建立“模式”的概念:
1 | 普通模式负责操作,插入模式负责输入,命令模式负责保存退出和高级命令。 |
新手最先需要掌握的是:
i:进入编辑。Esc:回到普通模式。:wq:保存退出。:q!:放弃修改退出。dd、yy、p、u:完成基础编辑。
等这些命令用熟之后,再逐渐学习查找替换、分屏、多文件和 .vimrc 配置,Vim 就会从“容易退出不了的编辑器”变成一个非常顺手的终端工具。