Vim 编辑器教程

第一部分:入门篇

Vim 是一个强大的文本编辑器,几乎所有 Linux/Unix 系统都预装了它。掌握 Vim 能让你在服务器环境、终端中高效编辑文件。

1. 启动与退出 Vim

vim 文件名        # 打开或创建文件
vim                # 打开 Vim(稍后用 :e 文件名 打开文件)

退出命令(在命令模式下输入):

命令说明
:w保存文件
:q退出 Vim
:wq保存并退出
:q!强制退出,不保存修改
ZZ等同于 :wq(保存并退出)

2. 两种核心模式

Vim 的核心是两种模式的切换:

  • 命令模式(Normal Mode):按键盘执行命令(移动、删除、复制等)
  • 插入模式(Insert Mode):像普通编辑器一样输入文字

模式切换

操作说明
i进入插入模式(在光标当前位置开始输入)
Esc退出插入模式,回到命令模式

提示:不确定当前在哪个模式时,多按几次 Esc 总能回到命令模式。


3. 常用快捷键速查

移动光标(命令模式)

按键说明
h j k l左、下、上、右(也可用方向键)
w跳到下一个单词开头
b跳到上一个单词开头
0跳到行首
$跳到行尾
gg跳到文件第一行
G跳到文件最后一行
行号G跳到指定行(如 50G 跳到第50行)

进入插入模式

按键说明
i在光标前插入
a在光标后插入
o在当前行下方新建一行并插入
O在当前行上方新建一行并插入
I在行首插入
A在行尾插入

删除操作

按键说明
x删除光标所在的字符
dd删除(剪切)当前行
数字dd删除多行(如 5dd 删除5行)
dw删除一个单词
d$删除到行尾
d0删除到行首

复制粘贴

按键说明
yy复制当前行
数字yy复制多行(如 3yy 复制3行)
yw复制一个单词
p在光标下方粘贴
P在光标上方粘贴

撤销与重做

按键说明
u撤销上一步操作
Ctrl + r重做(撤销的撤销)

搜索

按键说明
/关键词向下搜索(如 /hello
?关键词向上搜索
n跳到下一个匹配
N跳到上一个匹配

替换

命令说明
:s/旧/新/g替换当前行所有匹配
:%s/旧/新/g替换全文所有匹配
:%s/旧/新/gc替换全文,每次替换前确认

4. 入门实战流程

场景:编辑一个配置文件

# 1. 打开文件
vim config.conf

# 2. 进入插入模式,修改内容
 i

# 3. 编辑完毕,回到命令模式
 Esc

# 4. 保存退出
:wq

第二部分:进阶补充篇

1. Vim 的三种模式详解

Vim 实际上有三种主要模式:

模式说明
命令模式(Normal Mode)默认模式,执行各种命令
插入模式(Insert Mode)输入文本内容
命令行模式(Command-Line Mode)执行更复杂的命令(以 : 开头)

切换方式:

  • 命令模式 → 插入模式:按 iao
  • 命令模式 → 命令行模式:按 :
  • 任何模式 → 命令模式:按 Esc

2. 进阶光标移动

行内移动

按键说明
f + 字符跳到当前行下一个指定字符(如 fa 跳到下一个 a
F + 字符跳到当前行上一个指定字符
t + 字符跳到指定字符前一个位置
;重复上一次 f/F/t 操作
%跳到匹配的括号((){}[]

屏幕移动

按键说明
Ctrl + f向下翻一页(Page Down)
Ctrl + b向上翻一页(Page Up)
Ctrl + d向下翻半页
Ctrl + u向上翻半页
H跳到屏幕顶部
M跳到屏幕中部
L跳到屏幕底部
zz将当前行置于屏幕中央

文件跳转

按键说明
gg跳到文件第一行
G跳到文件最后一行
数字G跳到指定行(如 100G
:数字跳到指定行(如 :100
Ctrl + o返回上一次光标位置
Ctrl + i前进到下一次光标位置
gf跳转到光标下的文件路径

3. 进阶编辑操作

组合命令(动词 + 范围)

Vim 的命令遵循 动词 + 范围 的模式:

d + 范围 = 删除指定范围
y + 范围 = 复制指定范围
c + 范围 = 删除并进入插入模式

常用范围

范围说明
w一个单词
$到行尾
0到行首
gg到文件开头
G到文件结尾
iw内部单词(不含空格)
aw一个单词(含空格)
i"双引号内部内容
i(括号内部内容
itHTML标签内部内容

示例

  • dw — 删除一个单词
  • d$D — 删除到行尾
  • yiw — 复制光标所在的单词
  • ci" — 删除双引号内内容并进入插入模式
  • di( — 删除括号内内容
  • dit — 删除HTML标签内内容

快速修改

按键说明
cw删除单词并进入插入模式
cc删除整行并进入插入模式
C删除到行尾并进入插入模式
s删除字符并进入插入模式
S删除整行并进入插入模式
r + 字符替换光标下的字符
R进入替换模式(持续替换)
~切换大小写
gu转小写(如 guw 当前单词转小写)
gU转大写(如 gUw 当前单词转大写)

重复操作

按键说明
.重复上一次编辑操作(非常强大!)
数字 + 命令重复命令多次(如 5dd 删除5行)

4. 可视模式(Visual Mode)

可视模式用于选择文本,然后执行操作。

按键说明
v字符可视模式(按字符选择)
V行可视模式(按行选择)
Ctrl + v块可视模式(按矩形选择)

使用流程

  1. v 进入可视模式
  2. 用移动键选择文本
  3. 执行操作:d 删除、y 复制、c 修改等

块选择实用技巧

# 批量注释(在行首添加 #):
1. Ctrl + v 进入块选择
2. 选择多行的行首
3. 按 I 进入插入模式
4. 输入 #
5. 按 Esc

# 批量取消注释:
1. Ctrl + v 进入块选择
2. 选择注释符号
3. 按 d 删除

5. 寄存器与剪贴板

Vim 使用寄存器存储复制/删除的内容。

操作说明
"ayy复制当前行到寄存器 a
"ap粘贴寄存器 a 的内容
"0p粘贴上一次复制的内容(而非删除)
:reg查看所有寄存器内容
"+y复制到系统剪贴板(需 Vim 支持)
"+p从系统剪贴板粘贴

6. 多文件编辑

标签页

命令说明
:tabnew 文件名在新标签页打开文件
gt切换到下一个标签
gT切换到上一个标签
:tabclose关闭当前标签

分屏

命令说明
:sp 文件名水平分屏打开文件
:vsp 文件名垂直分屏打开文件
Ctrl + w + h/j/k/l在分屏间移动
Ctrl + w + =平分窗口大小
Ctrl + w + _最大化当前窗口高度
Ctrl + w + |最大化当前窗口宽度
:close关闭当前窗口
:only关闭其他所有窗口

缓冲区

命令说明
:e 文件名打开新文件
:buffers:ls列出所有打开的缓冲区
:bn切换到下一个缓冲区
:bp切换到上一个缓冲区
:b数字切换到指定编号的缓冲区
:bd关闭当前缓冲区

7. 宏录制

宏可以录制一系列操作并重复执行。

按键说明
qa开始录制宏到寄存器 a
q停止录制
@a执行寄存器 a 的宏
@@重复上一次执行的宏
数字@a执行宏多次(如 10@a

示例:给10行文本添加引号

qa          # 开始录制到 a
I"          # 行首插入引号
Esc         # 回到命令模式
A"          # 行尾添加引号
Esc         # 回到命令模式
j           # 移到下一行
q           # 停止录制
9@a         # 对接下来9行执行同样的操作

8. 实用命令行命令

命令说明
:r 文件名将文件内容插入到光标下方
:!命令执行外部命令(如 :!ls
:r !命令将外部命令输出插入到文件
:w 文件名另存为新文件
:n1,n2w 文件名将指定行范围保存到新文件
:set nu显示行号
:set nonu隐藏行号
:set relativenumber显示相对行号
:set list显示隐藏字符(Tab、行尾等)
:nohlsearch取消搜索高亮

9. 常用配置(写入 ~/.vimrc)

" 基础设置
set number              " 显示行号
set relativenumber      " 显示相对行号
set tabstop=4           " Tab 显示为4个空格
set shiftwidth=4        " 缩进宽度为4
set expandtab           " Tab 转为空格
set autoindent          " 自动缩进
set smartindent         " 智能缩进
set hlsearch            " 搜索高亮
set incsearch           " 增量搜索
set ignorecase          " 搜索忽略大小写
set smartcase           " 有大写时区分大小写
set cursorline          " 高亮当前行
set showmatch           " 显示匹配的括号
set encoding=utf-8      " 编码设置
set fileencoding=utf-8  " 文件编码
set wildmenu            " 命令行补全菜单
syntax on               " 语法高亮
filetype plugin indent on  " 文件类型检测

" 快捷键映射
let mapleader=","       " 设置 Leader 键为逗号
nmap <Leader>w :w<CR>   " ,w 保存
nmap <Leader>q :q<CR>   " ,q 退出

10. 常用场景速查

编辑配置文件

vim /etc/nginx/nginx.conf
# 修改后 :wq 保存退出

快速查看文件

vim file.txt
# 查看后 :q 退出

替换文件中的字符串

vim file.txt
:%s/旧字符串/新字符串/g
:wq

批量注释代码

Ctrl + v → 选择行 → I → 输入 # → Esc

批量取消注释

Ctrl + v → 选择 # → d

撤销所有修改

:q!   # 不保存强制退出

11. 速查卡片

┌─────────────────────────────────────────────────────────┐
│                    Vim 速查表                            │
├─────────────────────────────────────────────────────────┤
│  模式切换    i=插入  Esc=命令  :=命令行                  │
│  退出        :wq=保存退出  :q!=强制退出  ZZ=保存退出     │
│  移动        hjkl=方向  w/b=单词  0/$=行首尾  gg/G=首尾 │
│  编辑        x=删字符  dd=删行  yy=复制  p=粘贴  u=撤销 │
│  搜索        /关键词=向下  ?关键词=向上  n/N=下一个/上一个│
│  替换        :%s/旧/新/g=全局替换                        │
│  可视        v=字符选择  V=行选择  Ctrl+v=块选择         │
│  重复        .=重复上一次操作  数字+命令=重复多次          │
└─────────────────────────────────────────────────────────┘