Linux基础-VIM使用方法
简介
Vim 是从 vi 演化而来的文本编辑器,核心设计基于模式切换与组合命令。通过少量按键可以完成复杂文本操作,广泛用于终端开发与系统维护。
理解 Vim 的关键在于掌握其模式体系,而非单独记忆命令。
模式概览
Vim 主要包含三种核心模式,以及一个扩展的取代模式。
| 模式 | 进入方式 | 主要用途 | 退出方式 |
|---|---|---|---|
| 普通模式(Normal) | 打开文件默认进入,或按 Esc |
光标移动、复制删除、搜索跳转 | i/a/o 进入输入模式,: 进入命令行模式 |
| 输入模式(Insert) | i I a A o O |
输入文本 | Esc 返回普通模式 |
| 取代模式(Replace) | r 或 R |
覆盖替换文本 | Esc 返回普通模式 |
| 命令行模式(Command-line) | 普通模式下输入 : |
保存、退出、批量替换、配置 | 回车执行或 Esc 取消 |
快速上手流程
打开或新建文件
1 | vim 文件名 |
例如:
1 | vim runoob.txt |
编辑基本流程
- 按
i进入输入模式开始编辑 - 按
Esc返回普通模式 - 输入
:wq保存并退出 - 输入
:q!放弃修改并退出
普通模式
普通模式是 Vim 的核心操作环境,绝大多数编辑行为都从这里发起。
光标移动
基本移动
| 命令 | 作用 |
|---|---|
h |
向左移动一个字符 |
j |
向下移动一行 |
k |
向上移动一行 |
l |
向右移动一个字符 |
支持数字前缀:
1 | 30j |
表示向下移动 30 行。
跳转与定位
| 命令 | 作用 |
|---|---|
w / b |
下一个 / 上一个单词 |
0 / $ |
行首 / 行尾 |
gg / G |
文件首行 / 末行 |
nG |
跳到第 n 行 |
H / M / L |
屏幕顶部 / 中部 / 底部 |
+ / - |
下一行 / 上一行非空字符 |
Ctrl+f / Ctrl+b |
下翻页 / 上翻页 |
Ctrl+d / Ctrl+u |
下翻半页 / 上翻半页 |
删除操作
删除命令通常以 d 开头,可与移动命令组合。
| 命令 | 作用 |
|---|---|
x / X |
删除后一个 / 前一个字符 |
nx |
删除 n 个字符 |
dd |
删除当前行 |
ndd |
删除 n 行 |
d$ |
删除到行尾 |
d0 |
删除到行首 |
dG |
删除到文件末尾 |
d1G |
删除到文件开头 |
删除内容进入剪贴缓冲区,可直接粘贴。
复制与粘贴
| 命令 | 作用 |
|---|---|
yy |
复制当前行 |
nyy |
复制 n 行 |
y$ / y0 |
复制到行尾 / 行首 |
yG / y1G |
复制到文件末尾 / 开头 |
p / P |
在后方 / 前方粘贴 |
修改与替换
| 命令 | 作用 |
|---|---|
cw |
修改单词 |
cc |
修改整行 |
J |
合并下一行 |
r |
替换单字符 |
R |
连续覆盖替换 |
撤销与重复
| 命令 | 作用 |
|---|---|
u |
撤销 |
Ctrl+r |
重做 |
. |
重复上一次操作 |
重复命令适合批量编辑,例如连续删除多个相似结构。
搜索与替换
搜索
1 | /word |
向下搜索字符串。
1 | ?word |
向上搜索字符串。
| 命令 | 作用 |
|---|---|
n |
跳到下一个匹配 |
N |
反向跳转匹配 |
替换
全文替换:
1 | :%s/old/new/g |
确认式替换:
1 | :%s/old/new/gc |
指定范围替换:
1 | :100,200s/old/new/g |
输入模式
输入模式用于直接录入文本。
进入方式
| 命令 | 作用 |
|---|---|
i / I |
光标处插入 / 行首插入 |
a / A |
光标后插入 / 行尾插入 |
o / O |
下方 / 上方新建行 |
输入模式支持常规键盘操作:
- 字符输入
- 回车换行
- 删除键
- 方向键移动
- Home / End
- Page Up / Page Down
按 Esc 返回普通模式。
取代模式
取代模式用于覆盖已有文本。
| 命令 | 作用 |
|---|---|
r |
替换单个字符 |
R |
连续覆盖替换 |
按 Esc 结束取代。
命令行模式
在普通模式输入 : 进入命令行模式。
保存与退出
| 命令 | 作用 |
|---|---|
:w |
保存文件 |
:w! |
强制保存 |
:q |
退出 |
:q! |
强制退出 |
:wq |
保存并退出 |
ZZ |
保存并退出 |
ZQ |
不保存退出 |
文件操作
| 命令 | 作用 |
|---|---|
:w 文件名 |
另存为 |
:r 文件名 |
读入文件内容 |
:n1,n2 w 文件名 |
导出指定行 |
环境设置
| 命令 | 作用 |
|---|---|
:set nu |
显示行号 |
:set nonu |
取消行号 |
执行外部命令
1 | :!command |
示例:
1 | :!ls |
在 Vim 内查看系统命令输出。
数字前缀机制
Vim 支持数字前缀与命令组合,用于批量操作。
示例:
1 | 50dd |
删除 50 行。
1 | 20j |
向下移动 20 行。
高频操作示例
全文替换:
1 | :%s/foo/bar/g |
确认式替换:
1 | :%s/foo/bar/gc |
删除到行尾:
1 | d$ |
复制到文件末尾:
1 | yG |
可视模式(Visual)
可视模式用于“先选中,再操作”,对块状编辑和批量缩进非常高效。
进入方式
| 命令 | 作用 |
|---|---|
v |
字符级可视模式 |
V |
行级可视模式 |
Ctrl+v |
块级可视模式(列编辑) |
常用组合:
| 命令 | 作用 |
|---|---|
> / < |
缩进 / 反缩进选中内容 |
d / y |
删除 / 复制选中内容 |
c |
删除选中内容并进入输入模式 |
I |
块模式下在多行行首插入 |
A |
块模式下在多行行尾追加 |
文本对象与操作符组合
Vim 的高效率来自“操作符 + 文本对象/移动命令”。
常见操作符
| 操作符 | 作用 |
|---|---|
d |
删除 |
c |
修改(删除后进入输入模式) |
y |
复制 |
常见文本对象
| 文本对象 | 作用 |
|---|---|
iw / aw |
单词内部 / 包含空格的单词 |
i" / a" |
双引号内部 / 包含引号 |
i) / a) |
圆括号内部 / 包含括号 |
ip / ap |
段落内部 / 包含空行边界 |
示例:
1 | diw " 删除当前单词 |
寄存器与系统剪贴板
Vim 的复制删除内容默认进入寄存器(register),并不总是系统剪贴板。
常见寄存器
| 寄存器 | 说明 |
|---|---|
" |
默认寄存器 |
0 |
最近一次复制(y)内容 |
a-z |
命名寄存器 |
+ |
系统剪贴板(需 Vim 编译启用 clipboard) |
示例:
1 | "ayy " 复制当前行到寄存器 a |
可用以下命令检查是否支持系统剪贴板:
1 | :version |
若输出中包含 +clipboard,即可使用 "+ 寄存器。
宏录制与回放
宏适合处理重复格式化任务。
基础流程
qa:开始录制到寄存器a- 执行一组编辑动作
q:结束录制@a:执行一次宏10@a:执行 10 次
多窗口、分屏与标签页
分屏
| 命令 | 作用 |
|---|---|
:split / :sp |
水平分屏 |
:vsplit / :vs |
垂直分屏 |
Ctrl+w w |
在窗口间切换 |
Ctrl+w h/j/k/l |
按方向切换窗口 |
Ctrl+w q |
关闭当前窗口 |
Ctrl+w = |
平衡窗口尺寸 |
标签页
| 命令 | 作用 |
|---|---|
:tabnew |
新建标签页 |
:tabnext / gt |
下一个标签页 |
:tabprevious / gT |
上一个标签页 |
:tabclose |
关闭当前标签页 |
多文件编辑(参数列表)
同时打开多个文件:
1 | vim file1.txt file2.txt file3.txt |
切换文件:
| 命令 | 作用 |
|---|---|
:args |
查看参数列表 |
:next / :n |
下一个文件 |
:prev / :N |
上一个文件 |
:first |
第一个文件 |
:last |
最后一个文件 |
实用配置(~/.vimrc)
以下配置适合作为基础起点:
1 | set number |
说明:
number:显示绝对行号relativenumber:显示相对行号,配合j/k高效跳转expandtab:将 Tab 转为空格ignorecase + smartcase:默认忽略大小写,但含大写时精确匹配
常见问题
- 退出时提示 swap 文件:通常是异常退出留下的
.swp,确认无误后可删除。 - 粘贴代码缩进错乱:先执行
:set paste,粘贴后再:set nopaste。 - 方向键表现异常:检查终端类型与
TERM配置,优先使用hjkl。 - 中文显示乱码:确认终端与文件编码为 UTF-8,可执行
:set encoding?查看。
建议记忆顺序
如果刚开始用 Vim,按这个顺序练习会更顺手:
i/Esc/:wq(进出编辑与保存退出)hjkl、w/b、0/$、gg/G(移动)dd、yy、p、u、.(编辑与撤销)/、n、:%s/.../.../g(搜索替换)v、diw、ci"、宏qa ... q(提效操作)
- 标题: Linux基础-VIM使用方法
- 作者: 亓翎_Re-Tikara
- 创建于 : 2026-02-10 23:40:18
- 更新于 : 2026-02-11 19:38:21
- 链接: https://re-tikara.fun/Blog/posts/d51e69ff/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。