

Vim 详细使用教程:从入门到高频操作
一篇系统化 Vim 教程,覆盖模式切换、移动、编辑、复制粘贴、查找替换、可视模式、宏、寄存器与常用配置。
如果你经常在 Linux 服务器、终端或 SSH 环境里工作,Vim 仍然是最值得掌握的编辑器之一。
它的学习曲线确实比普通文本编辑器陡,但一旦掌握核心操作,你会明显感受到两个变化:
- 手不用频繁离开键盘
- 编辑速度和文本控制力都会上一个台阶
这篇教程按“先能独立编辑文件,再逐步提升效率”的顺序来讲,尽量把高频操作一次讲清楚。
1. Vim 是什么,适合什么场景#
Vim 是一个以键盘操作为核心的文本编辑器,尤其适合:
- 远程服务器上快速改配置
- 在终端里直接编辑代码或脚本
- 处理大量文本、日志、配置文件
- 希望减少鼠标依赖的人
如果你只是偶尔改一两行文本,图形编辑器当然更直观;但如果你经常 SSH 到远端机器,Vim 基本属于必备技能。
2. 安装与启动#
Ubuntu / Debian:
sudo apt update
sudo apt install -y vimbashCentOS / RHEL:
sudo yum install -y vimbashmacOS (Homebrew):
brew install vimbash查看版本:
vim --versionbash打开文件:
vim filename.txtbash如果文件不存在,保存时会自动创建。
3. 先理解 Vim 的核心:模式#
Vim 最重要的概念不是命令本身,而是模式。
3.1 普通模式#
打开 Vim 后默认进入普通模式。
这个模式主要用于:
- 移动光标
- 删除、复制、粘贴
- 搜索
- 跳转
- 执行命令
你可以把普通模式理解成“控制模式”。
3.2 插入模式#
插入模式就是正常输入文字的模式。
常见进入方式:
i:在光标前插入a:在光标后插入I:跳到行首并插入A:跳到行尾并插入o:在下一行新开一行并插入O:在上一行新开一行并插入
退出插入模式:
- 按
Esc
3.3 可视模式#
可视模式用于选中文本。
v:字符级选择V:整行选择Ctrl+v:块选择(列编辑非常有用)
3.4 命令行模式#
在普通模式下输入 : 进入命令行模式,用于保存、退出、替换、设置选项等。
例如:
:w
:q
:wqvim4. 第一次使用的最小闭环#
你至少先记住这几步:
vim test.txt打开文件- 按
i进入插入模式 - 输入内容
- 按
Esc回到普通模式 - 输入
:wq保存并退出
如果你不想保存:
:q!vim如果文件没改动,直接退出:
:qvim5. 光标移动:真正决定效率的部分#
很多人学 Vim 只记编辑命令,但真正拉开差距的是移动。
5.1 基础移动#
h:左j:下k:上l:右
这四个键是最基础的移动方式。
5.2 按单词移动#
w:跳到下一个单词开头b:跳到上一个单词开头e:跳到当前或下一个单词末尾
如果你在代码里频繁移动,w b e 比方向键高效很多。
5.3 按行移动#
0:跳到行首^:跳到本行第一个非空字符$:跳到行尾
5.4 按屏幕和文档移动#
gg:跳到文件开头G:跳到文件末尾:10:跳到第 10 行10G:跳到第 10 行Ctrl+d:向下翻半页Ctrl+u:向上翻半页Ctrl+f:向下翻一页Ctrl+b:向上翻一页
5.5 行内快速跳转#
f{字符}:向右找到本行中下一个指定字符F{字符}:向左找到本行中上一个指定字符t{字符}:跳到目标字符前一位T{字符}:跳到目标字符后一位;:重复上一次f/F/t/T,:反向重复
例如你想跳到这一行下一个 ),直接按:
f)text6. 编辑文本的高频操作#
6.1 删除#
x:删除当前字符dd:删除当前整行dw:删除到下一个单词d$:删除到行尾d0:删除到行首
6.2 复制与粘贴#
yy:复制当前行yw:复制一个单词p:在光标后粘贴P:在光标前粘贴
6.3 修改#
change 系列本质上是“删除后立刻进入插入模式”。
cw:修改一个单词cc:修改整行c$:从当前位置改到行尾
6.4 撤销与重做#
u:撤销Ctrl+r:重做
6.5 重复上一次操作#
.:重复上一次修改
这是 Vim 里非常强的一个键。
例如你刚执行过一次 cw 把某个变量名改掉,接着移动到下一个变量,按 . 就能重复同样的修改动作。
7. 数字前缀:批量操作的关键#
Vim 大量命令都支持“数字 + 动作”。
例如:
3j:向下移动 3 行5x:删除 5 个字符3dd:删除 3 行2yy:复制 2 行4w:向前跳 4 个单词
这个机制很重要,因为它能把重复操作压缩成一个动作。
8. 文本对象:Vim 真正强大的地方#
文本对象的思路是:不是按字符编辑,而是按语义结构编辑。
8.1 单词对象#
ciw:修改当前单词diw:删除当前单词yiw:复制当前单词
这里的 iw 是 inner word。
8.2 括号对象#
ci(:修改圆括号里的内容di(:删除圆括号里的内容yi(:复制圆括号里的内容
8.3 引号对象#
ci":修改双引号内内容ci':修改单引号内内容- 输入
ci后再接反引号键:修改反引号内内容
例如:
name = "hana_blog"python光标放在引号内部任意位置,按:
ci"text就会直接清空引号内内容并进入插入模式。
8.4 around 与 inner#
i:inside / inner,不包括边界a:around,包括边界
例如:
ci":只改引号内部内容ca":连引号一起替换
9. 可视模式:选中、缩进、批量编辑#
9.1 基础选择#
v进入字符选择V进入行选择- 选中后按
d删除、按y复制、按>缩进、按<反缩进
9.2 块选择#
按 Ctrl+v 进入块选择后,可以做列级编辑。
常见场景:
- 同时给多行前面加注释
- 同时删除多行开头的相同前缀
- 做整列对齐
例如给多行前面加 #:
Ctrl+v选中多行的第一列- 按
I - 输入
# - 按
Esc
Vim 会把这段内容批量插入到所有选中的行前面。
10. 搜索与替换#
10.1 搜索#
向下搜索:
/keywordtext向上搜索:
?keywordtext搜索结果跳转:
n:下一个N:上一个
10.2 高亮与取消高亮#
开启搜索高亮:
:set hlsearchvim取消当前高亮:
:nohlsearchvim10.3 替换#
替换当前行第一个匹配:
:s/old/new/vim替换当前行所有匹配:
:s/old/new/gvim替换全文所有匹配:
:%s/old/new/gvim替换全文并逐个确认:
:%s/old/new/gcvim这里的 c 表示 confirm。
11. 多文件与多窗口操作#
11.1 同时打开多个文件#
vim file1.txt file2.txtbash在 Vim 内切换缓冲区:
:bn:下一个 buffer:bp:上一个 buffer:ls:查看 buffer 列表:b 2:跳到第 2 个 buffer
11.2 分屏#
水平分屏:
:splitvim垂直分屏:
:vsplitvim打开指定文件:
:split another.txt
:vsplit another.txtvim窗口切换:
Ctrl+w然后h/j/k/l
关闭当前窗口:
:qvim11.3 标签页#
:tabnew:tabnext:tabprev:tabclose
不过对很多人来说,buffer + split 已经够用了。
12. 寄存器:理解复制粘贴背后的机制#
Vim 的复制、删除内容其实会进入寄存器。
查看寄存器:
:registersvim常见寄存器:
":默认寄存器0:最近一次复制内容%:当前文件名/:最近一次搜索内容
指定寄存器复制:
"ayytext表示把当前行复制到 a 寄存器。
从 a 寄存器粘贴:
"aptext如果你经常复制一段内容,期间又做了删除操作,寄存器会非常有用。
13. 宏:把重复编辑自动化#
宏适合处理“同一种编辑动作重复很多次”的场景。
13.1 录制宏#
按:
qatext表示开始录制到寄存器 a。
完成操作后按:
qtext结束录制。
13.2 执行宏#
执行一次:
@atext执行 10 次:
10@atext举例:如果你有很多格式相似的行,需要逐行插入固定前缀或做相同替换,宏会比手工操作快很多。
14. 实用命令汇总#
保存:
:wvim另存为:
:w newfile.txtvim退出:
:qvim保存并退出:
:wqvim强制退出不保存:
:q!vim显示行号:
:set numbervim显示相对行号:
:set relativenumbervim开启语法高亮:
:syntax onvim15. 推荐的基础配置#
你可以先从一个最小 .vimrc 开始:
set number
set relativenumber
set tabstop=2
set shiftwidth=2
set expandtab
set autoindent
set hlsearch
set incsearch
set ignorecase
set smartcase
syntax onvim配置文件位置通常是:
- Linux / macOS:
~/.vimrc
这套配置的作用分别是:
- 显示绝对行号与相对行号
- Tab 宽度设为 2
- 用空格代替 Tab
- 自动缩进
- 搜索时高亮、增量显示
- 搜索默认忽略大小写,但如果输入大写则大小写敏感
16. 新手最容易踩的坑#
16.1 忘记自己还在插入模式#
一旦发现快捷键都不生效,第一反应先按 Esc,回到普通模式再说。
16.2 不会退出#
这个几乎是每个 Vim 新手都踩过的坑。记住:
:q!不保存退出:wq保存退出
16.3 只会用方向键#
如果一直依赖方向键,你会很难真正体会 Vim 的效率。
至少先强迫自己多用:
hjklw b e0 ^ $gg G
16.4 把 Vim 当普通编辑器硬用#
Vim 的效率来自“动作组合”,不是单个命令。
比如下面这些都应该当成组合去理解:
ciwd$yi(3dd:%s/old/new/gc
17. 一条推荐学习路径#
如果你不想一次记太多,可以按这个顺序学:
- 先学进入 / 退出插入模式:
i a o Esc - 再学保存退出:
:w :q :wq :q! - 再学基础移动:
hjkl w b 0 $ gg G - 再学删除复制粘贴:
x dd yy p u - 再学高频组合:
ciw dw cw . - 最后学搜索替换、可视块、寄存器、宏
这样会比一次背完整命令表更容易真正用起来。
18. 结语#
Vim 最难的不是命令本身,而是接受它的编辑思维:
- 普通模式负责控制
- 插入模式只负责输入
- 大部分高效操作都来自“动作 + 对象”的组合
当你开始习惯 ciw、dd、p、.、/、:%s///gc 这类操作后,很多文本编辑任务会变得非常顺手。
如果你正在服务器上工作,最值得先练熟的不是全部功能,而是下面这组最小集合:
i a o Esc
:wq :q!
hjkl w b 0 $
dd yy p u
/ n N
ciw cw .text把这些练熟,再继续扩展到可视块、宏和寄存器,Vim 就会开始真正好用起来。