前言
Vim 是 Linux 系统自带的文本编辑器,也是每个开发者迟早要面对的工具。登录服务器修改配置文件、查看日志、写代码——不会 Vim 会非常痛苦。
本文不是百科全书,而是只讲你最常用的 20% 操作,覆盖 80% 的使用场景。
一、理解 Vim 的三种模式
Vim 设计中最难适应的概念,也是最重要的概念:
1 2 3 4 5 6 7 8 9 10 11 12
| ┌──────────┐ i / a / o ┌──────────┐ │ NORMAL │ ────────────→ │ INSERT │ │ (默认模式) │ ←──────────── │ (编辑模式) │ └──────────┘ Esc └──────────┘ ↑ ↑ │ : / ? │ └──────────┬────────────┘ ↓ ┌──────────┐ │ COMMAND │ │ (命令模式) │ └──────────┘
|
| 模式 |
进入方式 |
作用 |
| NORMAL |
打开文件 / 按 Esc |
移动光标、复制粘贴、删除(默认模式) |
| INSERT |
按 i, a, o 等 |
输入文字 |
| COMMAND |
按 :, /, ? |
保存、退出、搜索、替换 |
🧠 核心思想:Vim 的 philosophy 是”大部分时间在 NORMAL 模式,只在需要输入文字时才进入 INSERT 模式”。
二、基本操作(必学)
2.1 打开和退出
1 2 3
| vim file.txt vim +10 file.txt vim +/keyword file.txt
|
退出(在 NORMAL 模式下):
1 2 3 4 5
| :q 退出 :q! 强制退出(不保存) :wq 保存并退出(= :x = ZZ) :w 保存 :w file 另存为
|
2.2 进入编辑模式
1 2 3 4 5 6
| i 在光标前插入 a 在光标后插入 o 在下方新建一行并插入 O 在上方新建一行并插入 I 行首插入 A 行尾插入
|
2.3 移动光标
1 2 3 4 5 6 7
| h ← 左移 j ↓ 下移 k ↑ 上移 l → 右移
# 为什么要用 hjkl?因为手指不需要离开主键盘区域,效率更高。 # 习惯之后你会发现方向键太远了!
|
进阶移动:
1 2 3 4 5 6 7 8 9 10 11 12 13
| w 下一个单词开头 b 上一个单词开头 e 单词末尾 0 行首 ^ 行首(第一个非空字符) $ 行尾 gg 文件开头 G 文件末尾 10G 跳转到第 10 行(= :10) Ctrl+f 向下翻页 Ctrl+b 向上翻页 Ctrl+d 向下翻半页 Ctrl+u 向上翻半页
|
三、编辑操作(核心)
3.1 删除
1 2 3 4 5 6 7
| x 删除光标处字符 dd 删除整行 d$ 删除从光标到行尾 d0 删除从光标到行首 dw 删除一个单词 dG 删除到文件末尾 3dd 删除 3 行
|
3.2 复制和粘贴
1 2 3 4 5 6
| yy 复制整行 y$ 复制到行尾 yw 复制一个单词 3yy 复制 3 行 p 在光标后粘贴 P 在光标前粘贴
|
3.3 撤销和重做
3.4 修改(删除 + 进入插入模式)
1 2 3 4 5
| cw 修改一个单词 c$ 修改到行尾 cc 修改整行 C 修改到行尾(= c$) s 删除字符并插入
|
四、搜索和替换
4.1 搜索
1 2 3 4 5 6
| /pattern 向下搜索 ?pattern 向上搜索 n 下一个匹配 N 上一个匹配 * 搜索当前光标所在的单词(向下) # 搜索当前光标所在的单词(向上)
|
4.2 替换
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| # 替换当前行第一个匹配 :s/old/new/
# 替换当前行所有匹配 :s/old/new/g
# 替换全文 :%s/old/new/g
# 替换全文,每次确认 :%s/old/new/gc
# 替换第 10-20 行 :10,20s/old/new/g
# 替换包含确认 :%s/old/new/gc # 然后按 y=替换, n=跳过, a=全部替换, q=退出
|
五、实用组合技巧
5.1 多行操作
1 2 3 4 5 6 7 8 9 10 11
| # 给多行添加注释 # Ctrl+v 进入可视块模式 选中多行 Shift+i 进入插入模式 输入 # 按 Esc 应用到所有选中行
# 删除多行注释 Ctrl+v 进入可视块模式 选中 # 列 按 x 删除
|
5.2 缩进
1 2 3 4
| >> 当前行右缩进 << 当前行左缩进 >G 从当前行到文件末尾缩进 5>> 下面 5 行缩进
|
在 INSERT 模式下也可以用 Tab / Shift+Tab。
5.3 文件操作
1 2 3 4 5 6 7 8 9
| :e file.txt 打开另一个文件 :ls 列出打开的缓冲区 :bn 切换到下一个缓冲区 :bp 切换到上一个缓冲区 :bd 关闭当前缓冲区 :sp file.txt 水平分屏打开文件 :vsp file.txt 垂直分屏打开文件 Ctrl+w w 切换分屏窗口 Ctrl+w q 关闭分屏窗口
|
六、Vim 配置
Vim 的配置文件是 ~/.vimrc,一个适合初学者的基础配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
set number set relativenumber set cursorline set showmatch
set tabstop=4 set shiftwidth=4 set expandtab set autoindent
set hlsearch set incsearch set ignorecase set smartcase
set encoding=utf-8 set mouse=a set clipboard=unnamed syntax on
|
七、学习路线建议
第 1 天(10 分钟):
- 会用
i 进入编辑,Esc 退出
- 会用
hjkl 移动
- 会用
:wq 保存退出
- 会用
dd 删行,yy + p 复制粘贴
第 1 周(每天 5 分钟):
- 用
vimtutor(Vim 自带的教程)练习
- 强迫自己在终端中只用 Vim,不用其他编辑器
第 1 个月:
- 学习搜索替换
- 学习分屏操作
- 安装 2-3 个插件(如 NERDTree)
常用操作速查卡
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| ┌─────────────── 移动 ───────────────┐ │ h← j↓ k↑ l→ w下词 b上词 │ │ 0行首 $行尾 gg开头 G末尾 │ │ Ctrl+f下页 Ctrl+b上页 │ ├─────────────── 编辑 ───────────────┤ │ i前插 a后插 o下新行 O上新行 │ │ x删字符 dd删行 dw删词 │ │ yy复制 p粘贴 u撤销 Ctrl+r重做 │ │ cw改词 cc改行 │ ├─────────────── 搜索 ───────────────┤ │ /搜 n下一个 N上一个 │ │ :%s/old/new/g 全文替换 │ ├─────────────── 文件 ───────────────┤ │ :w保存 :q退出 :wq保存退出 │ │ :q!不保存退出 ZZ保存退出 │ └────────────────────────────────────┘
|
结语
Vim 的学习曲线确实陡峭,但一旦度过最初的不适应期,你会发现:
- 编辑速度大幅提升(手不离键盘)
- 登录服务器不再心慌
- 享受极客感和效率满足感
没有人天生会用 Vim。给自己一周时间,每天 5 分钟,你会发现一个新世界。⌨️