Linux 编辑器 Vim 核心概念与基础操作指南
在 Linux 系统的文本编辑生态中,Vim 无疑是最具代表性的工具之一。作为经典的 vi 编辑器的升级版本,Vim 不仅完美兼容了 vi 的所有指令,还引入了语法高亮、可视化操作等现代特性。它打破了终端环境的局限,能够流畅运行于 X Window、macOS 以及 Windows 等多种操作系统之上,成为了跨平台开发者的得力助手。
Vim 最核心的设计理念在于其独特的多模式编辑机制。虽然 Vim 内部包含了 12 种模式(6 种基础模式与 6 种附加模式),但在日常使用中,用户只需熟练掌握三种核心模式即可应对绝大多数编辑需求。
1. 正常/普通/命令模式 (Normal Mode)
- 核心功能:
- 控制屏幕光标的移动。
- 执行字符、字或行的删除操作。
- 移动、复制某区段的文本。
- 模式切换:
- 可由此模式进入
Insert mode(插入模式)。 - 可由此模式进入
last line mode(末行模式)。
- 可由此模式进入
2. 插入模式 (Insert Mode)
- 核心功能:
- 只有在 Insert mode 下,才可以进行文字输入。
- 这是后续日常使用中最频繁的编辑模式。
- 退出方式:
- 按
ESC键可退回到命令模式 (Normal Mode)。
- 按
3. 末行模式 (Last Line Mode)
- 核心功能:
- 文件的保存或退出。
- 进行文件内容替换、查找字符串。
- 列出/设置行号等高级操作。
- 进入方式:
- 在命令模式下,按
Shift + :(即输入冒号:)即可进入该模式。
- 在命令模式下,按
要查看你的所有模式及详细说明,可以在打开 Vim 后,在末行模式下直接输入以下命令:
:help vim-modes
Vim 基本操作
进入 Vim
在系统提示符后输入以下命令进入 Vim 全屏幕编辑界面:
$vimtest.c注意:进入 Vim 后,默认处于正常模式,需要切换到插入模式才能输入文字。
模式切换
正常模式 → 插入模式
| 命令 | 说明 |
|---|---|
a | 在光标当前位置的下一个位置开始输入 |
i | 在光标当前位置开始输入 |
o | 插入新的一行,从行首开始输入 |
插入模式 → 正常模式
- 按
ESC键
正常模式 → 末行模式
- 输入
:(Shift + ;)
退出与保存(末行模式)
| 命令 | 说明 |
|---|---|
:w | 保存当前文件 |
:wq | 存盘并退出 Vim |
:q! | 不存盘强制退出 Vim |
正常模式命令集
光标移动
| 命令 | 说明 |
|---|---|
h/j/k/l | 左 / 下 / 上 / 右 移动一格 |
G | 移动到文章末尾 |
$ | 移动到光标所在行的行尾 |
^ | 移动到光标所在行的行首 |
w | 光标跳到下一个字的开头 |
e | 光标跳到下一个字的字尾 |
b | 光标回到上一个字的开头 |
#l | 光标移到该行的第 # 个位置(如5l、56l) |
gg | 移动到文本开始 |
shift + g | 移动到文本末端 |
ctrl + b | 屏幕往后移动一页 |
ctrl + f | 屏幕往前移动一页 |
ctrl + u | 屏幕往后移动半页 |
ctrl + d | 屏幕往前移动半页 |
删除文字
| 命令 | 说明 |
|---|---|
x | 删除光标所在位置的一个字符 |
#x | 删除光标所在位置后面(包含自己)# 个字符(如6x) |
X | 删除光标所在位置的前面一个字符 |
#X | 删除光标所在位置的前面# 个字符(如20X) |
dd | 删除光标所在行 |
#dd | 从光标所在行开始删除 # 行 |
复制与粘贴
| 命令 | 说明 |
|---|---|
yw | 复制光标所在位置到字尾的字符到缓冲区 |
#yw | 复制 # 个字到缓冲区 |
yy | 复制光标所在行到缓冲区 |
#yy | 复制从光标所在行往下数# 行(如6yy) |
p | 将缓冲区内容粘贴到光标所在位置 |
替换
| 命令 | 说明 |
|---|---|
r | 替换光标所在处的字符 |
R | 连续替换光标所到之处的字符,直到按ESC结束 |
撤销与恢复
| 命令 | 说明 |
|---|---|
u | 撤销上一次操作(可多次按) |
ctrl + r | 恢复被撤销的操作 |
更改
| 命令 | 说明 |
|---|---|
cw | 更改光标所在处到字尾的内容 |
c#w | 更改 # 个字(如c3w) |
跳转至指定行
| 命令 | 说明 |
|---|---|
ctrl + g | 列出光标所在行的行号 |
#G | 移动光标至文章的第 # 行行首(如15G) |
末行模式命令集
使用前请按
ESC确认处于正常模式,再按:进入末行模式。
行号显示
| 命令 | 说明 |
|---|---|
set nu | 在文件每一行前面显示行号 |
跳转至指定行
| 命令 | 说明 |
|---|---|
:# | 跳转到第 # 行(如输入15后回车,跳转到第 15 行) |
查找字符
| 命令 | 说明 |
|---|---|
/关键字 | 向后查找关键字,按n继续向后查找下一个 |
?关键字 | 向前查找关键字,按n继续向前查找下一个 |
/与?的区别:/向后(文件末尾方向)搜索,?向前(文件开头方向)搜索。
保存文件
| 命令 | 说明 |
|---|---|
:w | 保存文件 |
离开 Vim
| 命令 | 说明 |
|---|---|
:q | 退出 Vim |
:q! | 强制退出 Vim(不保存) |
:wq | 保存并退出 Vim |
Vim 操作总结
三种核心模式
| 模式 | 说明 |
|---|---|
| 正常模式 | 默认模式,用于移动光标、删除、复制、粘贴等操作 |
| 插入模式 | 用于输入文字 |
| 底行模式(末行模式) | 用于保存、退出、查找、设置行号等操作 |
注:Vim 共有 12 种模式,以上三种是最常用的核心模式,其余模式可自行进一步研究。
常用操作分类
| 操作类型 | 示例命令 |
|---|---|
| 打开文件 | vim filename |
| 关闭/退出 | :q、:wq、:q! |
| 查看行号 | ctrl + g、:set nu |
| 查询 | /关键字、?关键字 |
| 插入 | i、a、o |
| 删除 | x、dd、#dd |
| 替换 | r、R |
| 撤销 | u、ctrl + r |
| 复制粘贴 | yy、yw、p |