Vim 快速入门
面向开发者的 Vim 快速入门,不讲插件不谈配置,只教你真正需要知道的东西——怎么打开文件、怎么编辑、怎么保存退出。
为什么你需要会 Vim
在 Linux / WSL2 环境下,你迟早会遇到这些场景:
git commit默认打开 Vim 来写提交信息visudo编辑 sudoers 文件crontab -e编辑定时任务- SSH 到远程服务器上改个配置文件
这些场景下 Vim 是默认编辑器,不会用的话会直接卡住,连退出都做不到。本文只讲生存级操作,让你能正常打开、编辑、保存、退出。
核心概念:模式切换
Vim 和普通编辑器最大的区别是模式。不同模式下,键盘按键的功能完全不同:
| 模式 | 用途 | 进入方式 |
|---|---|---|
| 普通模式 (Normal) | 浏览、导航、执行命令 | 打开文件默认进入;任何模式下按 Esc |
| 插入模式 (Insert) | 正常输入文字 | 在普通模式下按 i、a、o 等 |
| 命令模式 (Command) | 执行保存、退出等命令 | 在普通模式下按 : |
| 可视模式 (Visual) | 选中文本 | 在普通模式下按 v |
黄金法则:如果你不知道当前在哪个模式,按几次
Esc回到普通模式。
生存必备:打开和退出
打开文件
bash
vim file.txt # 打开文件
vim # 打开空编辑器
vim +100 file.txt # 打开并跳到第 100 行
退出
这是最常搜的问题——怎么退出 Vim:
| 命令 | 作用 |
|---|---|
:q | 退出(未修改时) |
:q! | 强制退出,不保存修改 |
:w | 保存 |
:wq | 保存并退出 |
ZZ | 保存并退出(快捷键,不需要按 :) |
记住一个就够了:
:q!强制退出,不保存,赶紧跑路。
移动光标
在普通模式下:
| 按键 | 作用 |
|---|---|
h j k l | 左、下、上、右(代替方向键) |
w | 跳到下一个单词开头 |
b | 跳到上一个单词开头 |
0 | 跳到行首 |
$ | 跳到行尾 |
gg | 跳到文件第一行 |
G | 跳到文件最后一行 |
Ctrl+d | 向下翻半页 |
Ctrl+u | 向上翻半页 |
数字 + G | 跳到指定行(如 50G 跳到第 50 行) |
编辑文本
进入插入模式
| 按键 | 作用 | 记忆方法 |
|---|---|---|
i | 在光标前插入 | insert |
a | 在光标后插入 | append |
o | 在当前行下方新建一行 | open |
O | 在当前行上方新建一行 | — |
I | 在行首插入 | — |
A | 在行尾插入 | — |
进入插入模式后就可以正常打字了。编辑完按 Esc 回到普通模式。
删除和修改
在普通模式下:
| 按键 | 作用 |
|---|---|
x | 删除光标所在字符 |
dd | 删除整行 |
dw | 删除到下一个单词开头 |
d$ 或 D | 删除到行尾 |
r | 替换光标所在字符(按 r 再按要替换的字符) |
cw | 删除到单词末尾并进入插入模式(change word) |
cc | 删除整行并进入插入模式(change line) |
u | 撤销 |
Ctrl+r | 重做 |
d= delete,c= change(删除并进入插入模式)。记住这两个前缀,后面跟什么就删什么。
复制、剪切和粘贴
Vim 的"剪贴板"叫寄存器:
| 按键 | 作用 |
|---|---|
yy | 复制整行(yank) |
yw | 复制一个单词 |
p | 在光标后粘贴 |
P | 在光标前粘贴 |
dd | 剪切整行(删除并复制) |
重复操作
| 按键 | 作用 |
|---|---|
数字 + 操作 | 重复操作 N 次 |
. | 重复上一次修改操作 |
示例:
5dd删除 5 行3p粘贴 3 次.重复刚才的删除/修改
搜索和替换
搜索
| 按键 | 作用 |
|---|---|
/关键词 | 向下搜索 |
?关键词 | 向上搜索 |
n | 跳到下一个匹配 |
N | 跳到上一个匹配 |
替换
| 命令 | 作用 |
|---|---|
:s/old/new/ | 替换当前行第一个匹配 |
:s/old/new/g | 替换当前行所有匹配 |
:%s/old/new/g | 替换整个文件所有匹配 |
:%s/old/new/gc | 替换整个文件,每次确认 |
实战:visudo 场景
回到 WSL2 安装 Arch Linux 时遇到的真实场景——用 visudo 给用户授权 sudo 权限:
bash
visudo
visudo打开vi编辑器,光标在第 1 行- 输入
/# %wheel回车,搜索目标行 - 按
0移到行首,按x删除#注释符 - 输入
:wq保存退出
完成。整个过程不需要进入插入模式。
实战:git commit 场景
git commit 默认打开 Vim 写提交信息:
- 按
i进入插入模式 - 第一行写提交标题,空一行写详细描述
- 按
Esc回到普通模式 - 输入
:wq保存退出
如果写了一半不想提交了:按 Esc,输入 :q! 强制退出。
实战:改配置文件
SSH 到服务器上改 Nginx 配置:
bash
sudo vim /etc/nginx/nginx.conf
- 输入
/server_name搜索目标配置 - 按
n跳到匹配处 - 按
cw删除旧的值并进入插入模式,输入新值 - 按
Esc,输入:wq保存退出 sudo nginx -t验证配置,sudo systemctl reload nginx重载
速查表
把这张表贴在显示器旁边,用几天就记住了:
text
生存三件套:
Esc → 回到普通模式
:q! → 不保存退出
:wq → 保存退出
移动:
h j k l → 左 下 上 右
w / b → 下/上一个单词
0 / $ → 行首 / 行尾
gg / G → 文件头 / 文件尾
编辑:
i / a / o → 插入模式
x → 删字符
dd → 删行
cw → 改单词
u → 撤销
. → 重复
剪贴板:
yy / p → 复制 / 粘贴
dd / p → 剪切 / 粘贴
搜索:
/关键词 → 搜索
n → 下一个匹配
下一步
掌握了基础操作后,可以按需探索:
vimtutor— 终端里输入这个命令,Vim 自带的 30 分钟交互式教程:help— Vim 内置文档,按:help u查看撤销的帮助- 配置文件 —
~/.vimrc可以设置行号、缩进、主题等 - 插件体系 — 如果打算把 Vim 当主力编辑器,可以研究插件管理器(如 lazy.nvim)
但对于大多数开发者来说,本文的内容已经足够应付日常的配置文件编辑了。