随记
vim用法
发布于 2026年7月27日
Vim 是一个“模式化编辑器”:同一组按键在不同模式下有不同作用。它刚上手比 nano 难,但熟练后编辑代码、配置文件和批量修改文本会非常高效。
1. Vim 的核心:四种模式
| 模式 | 用途 | 如何进入 |
|---|---|---|
| 普通模式 | 移动、删除、复制、执行命令 | 启动时默认进入;按 Esc 返回 |
| 插入模式 | 输入文字 | 按 i、a、o 等 |
| 可视模式 | 选择文本 | 按 v、V 或 Ctrl+V |
| 命令行模式 | 保存、退出、替换、配置 | 普通模式下按 : |
如果不知道自己在哪个模式,先按几次 Esc,通常就能回到普通模式。
2. 打开文件
vim 文件名
例如:
vim notes.txt
vim /etc/hosts
sudo vim /etc/nginx/nginx.conf
打开并跳到第 42 行:
vim +42 notes.txt
打开并搜索某个词:
vim +/keyword notes.txt
3. 输入文字
在普通模式中:
| 按键 | 作用 |
|---|---|
i |
在光标前开始输入 |
a |
在光标后开始输入 |
I |
在当前行开头输入 |
A |
在当前行末尾输入 |
o |
在下方新建一行并输入 |
O |
在上方新建一行并输入 |
R |
进入覆盖输入模式 |
Esc |
停止输入,返回普通模式 |
最基本流程:
vim 文件名
按 i
输入内容
按 Esc
输入 :wq
按 Enter
4. 保存和退出
先按 Esc 回到普通模式,然后输入:
| 命令 | 作用 |
|---|---|
:w |
保存 |
:q |
退出 |
:wq |
保存并退出 |
:x |
保存修改并退出 |
:q! |
放弃修改,强制退出 |
:w 文件名 |
另存为指定文件 |
ZZ |
保存并退出,不需要输入冒号 |
ZQ |
不保存退出 |
最重要的“紧急退出”方法:
Esc
:q!
Enter
5. 移动光标
方向键通常可用,但 Vim 用户常用下面这些键:
| 按键 | 作用 |
|---|---|
h |
左 |
j |
下 |
k |
上 |
l |
右 |
w |
跳到下一个单词开头 |
b |
跳到上一个单词开头 |
e |
跳到当前或下一个单词末尾 |
0 |
跳到行首 |
^ |
跳到本行第一个非空字符 |
$ |
跳到行尾 |
gg |
跳到文件开头 |
G |
跳到文件末尾 |
42G |
跳到第 42 行 |
Ctrl+D |
向下翻半页 |
Ctrl+U |
向上翻半页 |
{ / } |
跳到上一段或下一段 |
很多命令可以加数字。例如:
5j 向下移动 5 行
3w 向后移动 3 个单词
10G 跳到第 10 行
6. 删除和修改
这些操作在普通模式下执行:
| 按键 | 作用 |
|---|---|
x |
删除光标处字符 |
dd |
删除当前行 |
D |
删除到行尾 |
dw |
删除到下一个单词 |
diw |
删除光标所在的整个单词 |
cc |
删除当前行并进入输入模式 |
cw |
修改当前单词 |
C |
修改到行尾 |
r字符 |
替换当前字符 |
J |
将下一行合并到当前行 |
. |
重复上一次修改 |
例如:
3dd 删除 3 行
d$ 删除到行尾
ciw 修改当前整个单词
这体现了 Vim 很重要的“操作符 + 范围”思维:
d + w = 删除到下一个单词
d + $ = 删除到行尾
c + iw = 修改当前单词
y + y = 复制当前行
7. 复制和粘贴
| 按键 | 作用 |
|---|---|
yy |
复制当前行 |
3yy |
复制当前行及下面两行 |
yw |
复制一个单词 |
p |
粘贴到光标后或下一行 |
P |
粘贴到光标前或上一行 |
dd |
剪切当前行 |
u |
撤销 |
Ctrl+R |
重做 |
Vim 默认复制到自身的寄存器,不一定是系统剪贴板。支持系统剪贴板的 Vim 可以使用:
"+y 复制到系统剪贴板
"+p 从系统剪贴板粘贴
终端中的 Ctrl+C、Ctrl+V 通常不是 Vim 的常规复制粘贴键。
8. 选择文本
| 按键 | 作用 |
|---|---|
v |
按字符选择 |
V |
按整行选择 |
Ctrl+V |
按矩形块选择 |
y |
复制选择内容 |
d |
删除选择内容 |
c |
删除选择内容并开始输入 |
Esc |
取消选择 |
例如:
V
用 j 向下选择多行
y
移动到目标位置
p
9. 搜索和替换
搜索:
/hello
按 Enter 后:
| 按键 | 作用 |
|---|---|
n |
下一个匹配项 |
N |
上一个匹配项 |
?hello |
向前搜索 |
* |
搜索光标所在单词 |
:nohlsearch |
清除搜索高亮 |
替换当前行第一个匹配:
:s/旧内容/新内容/
替换当前行所有匹配:
:s/旧内容/新内容/g
替换整个文件所有匹配:
:%s/旧内容/新内容/g
逐个确认:
:%s/旧内容/新内容/gc
确认时常用:
y:替换当前项n:跳过当前项a:替换后续全部q:退出替换
10. 多文件与分屏
打开另一个文件:
:e other.txt
查看已打开的缓冲区:
:ls
切换缓冲区:
:bn
:bp
水平分屏:
:sp other.txt
垂直分屏:
:vsp other.txt
在分屏之间移动:
Ctrl+W,然后按 h/j/k/l
关闭当前窗口:
:q
11. 常用设置
临时显示行号:
:set number
显示相对行号:
:set relativenumber
启用语法高亮:
:syntax on
Unix/Linux 下可以写入 ~/.vimrc,使设置永久生效:
syntax on
set number
set tabstop=4
set shiftwidth=4
set expandtab
set autoindent
set ignorecase
set smartcase
12. Nano 和 Vim 的差异
| 对比项 | Nano | Vim |
|---|---|---|
| 操作方式 | 打开后直接输入 | 区分普通、插入、可视等模式 |
| 上手难度 | 很低 | 较高 |
| 快捷键提示 | 底部直接显示 | 通常需要记忆 |
| 保存退出 | Ctrl+O、Ctrl+X |
:w、:q、:wq |
| 编辑效率 | 适合简单修改 | 熟练后非常高 |
| 搜索替换 | 基础功能 | 支持复杂模式和正则表达式 |
| 批量编辑 | 能力有限 | 很强 |
| 多文件与分屏 | 较弱 | 内置缓冲区、标签页和分屏 |
| 扩展性 | 较低 | 可配置,拥有大量插件 |
| 适用场景 | 临时修改配置、写短文本 | 编程、长期编辑、批量处理 |
| 学习成本 | 几乎没有 | 需要练习并形成肌肉记忆 |
简单选择建议:
- 偶尔在服务器上改两行配置:使用 nano。
- 经常使用终端、写代码或修改大量文本:值得学习 Vim。
- 紧急修配置且不熟悉 Vim:nano 更稳妥。
- Vim 不一定存在,但类 Unix 系统通常会提供
vi;vi和 Vim 基础操作相似,不过 Vim 功能更多。
13. 新手最值得先记住的命令
i 开始输入
Esc 返回普通模式
:w 保存
:q 退出
:wq 保存并退出
:q! 不保存退出
dd 删除一行
yy 复制一行
p 粘贴
u 撤销
/关键词 搜索
n 下一个结果
掌握这十几个操作后,已经足够应对大多数基础编辑任务。