Vim 七日精通教程:从入门到脱离鼠标

面向人群:需要频繁修改服务器配置、编写技术文档/代码的开发者

核心原则:肌肉记忆优先,原生功能优先,实战场景驱动,7天形成本能操作

目标:摆脱鼠标,纯键盘完成配置修改、文档撰写、代码浏览,效率远超普通编辑器


一、学习前的核心认知

1.1 为什么要学 Vim

  1. 全键盘操作:手不离开主键盘区,无需频繁切换鼠标,长期使用效率提升显著

  2. 服务器原生支持:几乎所有 Linux 服务器默认自带 vi/vim,无需额外安装

  3. 极低资源消耗:启动快、占内存小,远程SSH操作流畅无延迟

  4. 高度可定制:通过配置文件和插件可扩展为强大的编辑环境

1.2 新手最大的坎:三种模式

Vim 和普通编辑器最本质的区别是模式切换,搞不懂模式就会觉得“Vim 反人类”。

模式 进入方式 功能说明
普通模式(命令模式) 打开文件默认进入 / 任意模式按 Esc 所有按键都是命令,用于移动、删除、复制、搜索,不能直接打字输入
插入模式 普通模式按 i / a / o 和普通编辑器一样,直接输入文字
底线命令模式 普通模式按 : 底部输入命令,用于保存、退出、全局替换、设置选项

💡 新手救命技巧:不知道自己在什么模式、按错了键、界面卡住,狂按 Esc 一定回到普通模式。

1.3 正确的学习方法

  1. 不要一开始装插件:先把原生功能练熟,插件是锦上添花,不是雪中送炭

  2. 强迫不用方向键:从第一天起就用 h j k l 移动,一周形成肌肉记忆

  3. 命令是组合出来的:不用死记几百个命令,记住核心动作+范围即可自由组合

    • 动作:d删除、y复制、c修改

    • 范围:w单词、$行尾、0行首、j下一行


二、第1天:生存级命令 —— 先保证能进能出

目标:打开文件、输入文字、保存退出,不会困在 Vim 里。

2.1 打开与退出

1
2
3
4
# 打开文件
vim 文件名
# 打开文件并跳到第20行
vim +20 文件名

底线命令模式(先按 :):

命令 作用 备注
:w 保存 不退出
:q 退出 文件未修改才能退出
:wq 保存并退出 等价 ZZ(普通模式下按两次大写Z)
:q! 强制退出不保存 改错了直接撤销所有修改,最常用救命键
:wq! 强制保存退出 文件只读但你有权限时使用

2.2 进入插入模式

最常用的三个进入方式,按需选择:

命令 插入位置 适用场景
i 光标插入 最常用,正常修改
a 光标插入 光标在字中间,往后加字
o 光标下一行新建空行并插入 写代码、写文档换行追加
O 光标上一行新建空行并插入 往前补内容

第一天练习任务

  1. 新建一个 test.md 文件,输入3行文字

  2. 保存退出,再重新打开

  3. 修改第一行,然后不保存强制退出,验证修改是否丢失

  4. 全程强迫自己不用方向键,用 Esc 切回普通模式


三、第2天:光标移动 —— 彻底摆脱鼠标

目标:手不离开键盘主位,精准移动到任意位置。

全部在普通模式下操作

3.1 基础移动(替代方向键)

Text
1
h ← 左   j ↓ 下   k ↑ 上   l → 右

一开始会很慢,坚持1天就会比方向键快。可以在 vimrc 里禁用方向键强迫自己练习。

3.2 单词级移动(写代码/文档效率翻倍)

命令 作用
w 跳到下一个单词开头
b 跳到上一个单词开头(back)
e 跳到当前单词结尾
W / B / E 以空格为分隔的大单词移动,忽略标点

3.3 行内快速移动

命令 作用
0 跳到行首(绝对第一个字符)
^ 跳到行首第一个非空字符
$ 跳到行尾
f+字符 跳到当前行下一个指定字符
F+字符 跳到当前行上一个指定字符

3.4 页面与文件级移动

命令 作用
Ctrl + f 向下翻一页(forward)
Ctrl + b 向上翻一页(back)
Ctrl + d 向下翻半页(down)
Ctrl + u 向上翻半页(up)
gg 跳到文件开头
G 跳到文件结尾
:行号 跳到指定行,例如 :25 跳第25行

改配置神器:报错说第几行出错,直接 :数字 一秒跳过去,不用翻半天。

第二天练习任务

  1. 打开一篇长文档,只用 hjkl 移动光标遍历全文

  2. w / b 逐单词移动

  3. 练习用 f 跳转到行内指定字符

  4. :10ggG 快速跳转


四、第3天:基础编辑 —— 普通模式下的高效操作

目标:不用进入插入模式,就能完成删除、复制、粘贴、撤销。

4.1 删除命令(删除=剪切)

Vim 里删除的内容会进入剪贴板,可以粘贴。

命令 作用
x 删除光标所在单个字符
dd 删除整行(最常用)
dw 删除光标开始到下一个单词开头
d$ / D 删除光标到行尾
d0 删除光标到行首
ndd 删除向下n行,例如 3dd 删除3行

4.2 复制与粘贴

命令 作用
yy 复制整行
yw 复制一个单词
y$ 复制光标到行尾
p 粘贴到光标下一行/后面
P 粘贴到光标上一行/前面

4.3 撤销与重做

命令 作用
u 撤销上一步(等价 Ctrl+Z)
Ctrl + r 重做(等价 Ctrl+Y)

组合逻辑举例

理解了组合逻辑,不用死记就能衍生出几十种操作:

  • d2w = 删除2个单词

  • y3j = 复制当前行及下面3行

  • c$ = 删除光标到行尾并进入插入模式(修改到行尾)

第三天练习任务

  1. dd / p 快速移动行的位置

  2. dw 删除单词,用 x 删除字符

  3. 练习撤销和重做,熟悉操作回滚


五、第4天:搜索与批量替换 —— 改配置效率神器

目标:快速定位关键字,批量修改内容。

5.1 搜索

普通模式下按 /,输入关键词,回车开始搜索。

命令 作用
n 跳到下一个匹配项
N 跳到上一个匹配项
?关键词 向上搜索
:noh 取消搜索高亮

实战:改 Nginx 配置,/server_name 直接定位到域名配置行,按 n 挨个找。

5.2 替换(底线命令模式)

基础语法

Text
1
:[范围]s/旧内容/新内容/[标志]

常用替换命令

命令 作用
:s/old/new 替换当前行第一个匹配
:s/old/new/g 替换当前行所有匹配
:%s/old/new/g 全局替换整个文件(最常用)
:%s/old/new/gc 全局替换,每次替换前确认
:10,20s/old/new/g 替换第10到20行

实战:批量把配置里的 8080 改成 80,一条命令搞定。

第四天练习任务

  1. 在文档里搜索一个关键词,用 n/N 跳转

  2. 用全局替换批量修改文档中的某个词

  3. 尝试带确认的替换,熟悉 c 参数


六、第5天:视觉模式 —— 批量操作的核心

目标:选中内容批量处理,批量注释、缩进、删除。

5.1 三种视觉模式

命令 模式 适用场景
v 字符视觉模式 选中部分字符
V 行视觉模式 按行选中,批量删行、注释、缩进(最常用)
Ctrl + v 块视觉模式 竖列选中,批量加注释、批量插入字符(神技)

5.2 选中后常用操作

命令 作用
d 删除选中内容
y 复制选中内容
> 向右缩进
< 向左缩进
= 自动对齐缩进

5.3 实战:批量注释多行

以给配置文件加 # 注释为例:

  1. 光标移到第一行行首

  2. Ctrl + v 进入块视觉模式

  3. j 向下选中要注释的所有行

  4. 按大写 I 进入插入模式

  5. 输入 #

  6. Esc,所有选中行自动加上注释

取消注释:同样块选中注释符,按 d 删除。

第五天练习任务

  1. 用行视觉模式选中多行,删除、复制、缩进

  2. 用块视觉模式批量给多行加注释、取消注释

  3. 选中代码块按 = 自动对齐


七、第6天:基础配置优化 —— 原生也能很好用

目标:通过 .vimrc 配置,提升编辑体验,不用插件。

创建配置文件:

1
vim ~/.vimrc

写入以下基础配置:

Text
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
" ========== 基础显示 ==========
set number " 显示行号
set cursorline " 高亮当前行
syntax enable " 开启语法高亮
set showmatch " 括号匹配高亮
set hlsearch " 搜索结果高亮
set incsearch " 输入时实时搜索
" ========== 编辑体验 ==========
set autoindent " 自动缩进
set smartindent " 智能缩进
set tabstop=4 " Tab显示为4个空格宽度
set shiftwidth=4 " 自动缩进宽度
set expandtab " Tab自动转成空格
set textwidth=80 " 写文档80列自动换行
" ========== 操作优化 ==========
set mouse=a " 过渡期允许鼠标,熟练后可注释掉
map <F2> :w<CR> " F2快速保存
map <F3> :set number!<CR> " F3切换行号
nnoremap Y y$ " 让Y复制到行尾,符合直觉
" ========== Markdown 优化 ==========
autocmd BufRead,BufNewFile *.md,*.markdown set filetype=markdown
autocmd FileType markdown setlocal wrap linebreak
autocmd FileType markdown setlocal formatoptions+=r

保存退出,重新打开 Vim 即生效。

第六天练习任务

  1. 编写自己的 .vimrc 配置文件

  2. 验证行号、语法高亮、F2保存是否生效

  3. 打开一个 md 文件,验证自动换行、列表自动续行


八、第7天:实战场景演练

场景1:修改服务器配置文件(如 sshd_config)

1
sudo vim /etc/ssh/sshd_config
  1. /Port 搜索端口配置

  2. i 进入插入模式修改端口号

  3. Esc 退回普通模式

  4. :wq 保存退出

权限不够保存失败?输入 :w !sudo tee % 回车,输入密码即可强制保存。

场景2:编写 Markdown 文档

标题快速调整

  • 升一级:行首按 I# <Esc>

  • 降一级:光标移到 # 上按 x

  • 批量升一级:选中多行 → :normal I# 回车

列表操作

  • 新建列表项:o-

  • 批量转列表:选中多行 → :s/^/- /

代码块快速插入

普通模式输入:

Text
1
o```bash<CR>```<Esc>kO

一键生成带语言标识的代码块,光标停在中间。

加粗、斜体

选中文字 → c**<Esc>p** → 快速加粗

长文档折叠

命令 作用
zfap 折叠当前段落/章节
zo 打开当前折叠
zM 折叠全部章节
zR 打开全部折叠

第七天练习任务

  1. 用 Vim 修改一个系统配置文件,全程不用鼠标

  2. 用 Vim 写一篇完整的 Markdown 笔记,包含标题、列表、代码块

  3. 用折叠功能管理长文档结构


九、常见坑与避坑指南

  1. 按 i 打不出字? 检查是不是中文输入法,插入模式只识别英文输入法输入的字符

  2. 按了 Ctrl+s 界面卡死?Ctrl+q 恢复,这是终端流控制快捷键

  3. 保存提示 E212 无法写入? 要么权限不够加 sudo,要么文件只读

  4. 不知道按了什么,输入变成奇怪字符? 狂按 Esc 回普通模式,按 u 撤销

  5. 不要装太多插件:新手最容易陷入配置陷阱,半天没写成东西,光折腾插件了


十、进阶方向

基础打牢之后,可以按需拓展:

  1. 文件管理:NERDTree / netrw 目录浏览

  2. 代码补全:YouCompleteMe / coc.nvim

  3. 全文搜索:fzf 模糊搜索文件

  4. 多窗口:分屏编辑、标签页

  5. 文本对象ci" 修改引号内内容,di( 删除括号内内容


附录:七日学习计划表

天数 核心内容 练习目标
第1天 三种模式、保存退出 能独立打开、编辑、保存、退出文件
第2天 hjkl移动、单词跳转、行跳转 全程不用方向键移动光标
第3天 删除、复制、粘贴、撤销 普通模式下完成常用编辑操作
第4天 搜索、全局替换 快速定位、批量修改内容
第5天 视觉模式、批量操作 批量注释、缩进、删除
第6天 vimrc 基础配置 打造适合自己的编辑环境
第7天 实战场景演练 改配置、写文档全程脱离鼠标

每天只需10-15分钟,坚持一周,形成肌肉记忆后编辑效率会有质的提升。