主题
VI/VIM编辑器详解
课程介绍
VIM是Linux下最常用的文本编辑器,纯命令行操作,效率很高。我们来学习VIM的三种工作模式切换、常用快捷键,以及保存退出等基本操作。你还会学到一些实用的技巧,比如分屏编辑、批量替换。熟练掌握VIM,以后编辑配置文件和写脚本就方便了。
1. VI/VIM简介
概念说明
- VI:Linux系统中最经典的文本编辑器,命令行环境下的必备工具
- VIM:VI的增强版本,兼容VI的所有指令,增加了语法高亮、自动缩进等高级功能
主要特点
- 纯命令行操作,无需图形界面
- 高效的编辑模式切换
- 强大的快捷键系统
- 支持语法高亮和代码补全(VIM)
- 跨平台支持
2. VI/VIM的三种工作模式
VI/VIM编辑器有三种核心工作模式,它们之间可以通过特定的命令进行切换。
1. 命令模式(Command Mode)
- 进入方式:打开VI/VIM时默认进入
- 主要功能:控制光标移动、删除文本、复制粘贴、切换模式
- 操作特点:按下键盘按键会被解析为命令,而非输入内容
2. 输入模式(Insert Mode)
- 进入方式:在命令模式下按
i、a、o等键 - 主要功能:输入和编辑文本内容
- 操作特点:按下键盘按键会直接插入到文档中
3. 底线命令模式(Last Line Mode)
- 进入方式:在命令模式下按
:键 - 主要功能:保存文件、退出编辑器、查找替换等全局操作
- 操作特点:命令输入在屏幕底部的冒号后
模式切换示意图
┌─────────────┐ i, a, o等 ┌─────────────┐
│ 命令模式 │ ───────────────> │ 输入模式 │
└─────────────┘ └─────────────┘
▲ │
│ ESC键 │ ESC键
│ ┌─────────────┘
│ │
└──────────────────┼───────────────────────┐
│ │
▼ ▼
┌─────────────┐ : ┌─────────────┐
│ 底线命令模式 │ <──────────── │ 命令模式 │
└─────────────┘ └─────────────┘3. 基础操作演示
打开文件
bash
# 打开已存在的文件
$ vim test.txt
# 创建并打开新文件
$ vim newfile.txt编辑文件内容
# 1. 进入命令模式(默认)
$ vim test.txt
# 2. 按i键进入输入模式
# 输入内容:yege and gaokun
# 3. 按ESC键返回命令模式
# 4. 按:键进入底线命令模式
# 输入wq保存并退出保存与退出
# 保存文件但不退出
:w
# 退出编辑器
:q
# 保存并退出
:wq
# 强制退出(不保存)
:q!4. 命令模式常用快捷键
1. 光标移动
| 快捷键 | 功能描述 |
|---|---|
↑↓←→ | 方向键移动光标 |
h | 向左移动 |
j | 向下移动 |
k | 向上移动 |
l | 向右移动 |
0 | 移动到行首 |
$ | 移动到行尾 |
gg | 移动到文件首行 |
G | 移动到文件尾行 |
nG | 移动到第n行 |
Page Up/Ctrl+b | 向上翻页 |
Page Down/Ctrl+f | 向下翻页 |
2. 进入输入模式
| 快捷键 | 功能描述 |
|---|---|
i | 在光标当前位置插入 |
a | 在光标当前位置之后插入 |
I | 在当前行首插入 |
A | 在当前行尾插入 |
o | 在当前行下方新建一行插入 |
O | 在当前行上方新建一行插入 |
3. 文本删除
| 快捷键 | 功能描述 |
|---|---|
x | 删除光标所在位置的字符 |
nx | 删除光标后n个字符 |
dd | 删除光标所在行 |
ndd | 删除从当前行开始的n行 |
d0 | 删除从光标到行首的内容 |
d$ | 删除从光标到行尾的内容 |
dG | 删除从当前行到文件末尾的内容 |
dgg | 删除从当前行到文件开头的内容 |
4. 复制与粘贴
| 快捷键 | 功能描述 |
|---|---|
yy | 复制光标所在行 |
nyy | 复制从当前行开始的n行 |
p | 粘贴到光标下方 |
P | 粘贴到光标上方 |
5. 撤销与重做
| 快捷键 | 功能描述 |
|---|---|
u | 撤销上一步操作 |
Ctrl+r | 重做上一步操作 |
6. 搜索功能
| 快捷键 | 功能描述 |
|---|---|
/keyword | 向下搜索keyword |
?keyword | 向上搜索keyword |
n | 继续搜索下一个匹配项 |
N | 继续搜索上一个匹配项 |
5. 底线命令模式常用命令
1. 文件操作
| 命令 | 功能描述 |
|---|---|
:w | 保存文件 |
:q | 退出编辑器 |
:wq | 保存并退出 |
:q! | 强制退出不保存 |
:x | 保存并退出(同:wq) |
:e file | 打开指定文件 |
:saveas file | 另存为指定文件 |
2. 查找与替换
| 命令 | 功能描述 |
|---|---|
:s/old/new | 替换当前行第一个old为new |
:s/old/new/g | 替换当前行所有old为new |
:%s/old/new | 替换文件中第一个old为new |
:%s/old/new/g | 替换文件中所有old为new |
:n1,n2s/old/new/g | 替换n1到n2行所有old为new |
3. 设置选项
| 命令 | 功能描述 |
|---|---|
:set nu | 显示行号 |
:set nonu | 隐藏行号 |
:set autoindent | 自动缩进 |
:set paste | 设置粘贴模式,避免格式错乱 |
:set hlsearch | 高亮显示搜索结果 |
6. 实用操作技巧
1. 多文件编辑
bash
# 同时打开多个文件
$ vim file1.txt file2.txt# 在文件间切换
:n # 切换到下一个文件
:N # 切换到上一个文件2. 分屏编辑
# 水平分屏
:split file2.txt
# 或使用快捷键
Ctrl+w s
# 垂直分屏
:vsplit file2.txt
# 或使用快捷键
Ctrl+w v
# 分屏间切换
Ctrl+w h/j/k/l # 方向键移动
Ctrl+w w # 循环切换3. 批量处理
# 批量注释(在第1-10行前添加#)
:1,10s/^/#/
# 批量取消注释(删除第1-10行前的#)
:1,10s/^#//7. 操作流程示例
创建并编辑文件
bash
# 1. 创建并打开新文件
$ vim hello.txt# 2. 按i进入输入模式
# 输入内容:hello Linux
# 按ESC返回命令模式
# 3. 按:进入底线命令模式
# 输入wq保存并退出修改现有文件
bash
# 1. 打开现有文件
$ vim test.txt# 2. 移动光标到要修改的位置
# 按i进入输入模式修改内容
# 按ESC返回命令模式
# 3. 按:进入底线命令模式
# 输入w保存修改
# 输入q退出8. 命令速查
| 功能类别 | 常用命令/快捷键 |
|---|---|
| 模式切换 | i(进入输入模式)ESC(返回命令模式):(进入底线模式) |
| 文件操作 | :w(保存):q(退出):wq(保存退出):q!(强制退出) |
| 光标移动 | h/j/k/l(方向)0/$(行首/尾)gg/G(文件首尾) |
| 文本编辑 | i/a/o(插入)dd(删除行)yy(复制行)p(粘贴) |
| 查找替换 | /keyword(搜索):s/old/new/g(替换) |
| 设置选项 | :set nu(显示行号):set paste(粘贴模式) |
课程总结
这节课我们学了VIM编辑器。
三种模式:
- 命令模式 - 移动光标、复制粘贴
- 输入模式 - 编辑文本(按i/a/o进入)
- 底线命令模式 - 保存退出(按:进入)
常用操作: 模式切换: i/a/o进入输入,ESC返回命令,:进入底线模式 文件操作: :w保存,:q退出,:wq保存退出 编辑操作: dd删除行,yy复制,p粘贴 查找替换: /关键词查找,:s/旧/新/g全部替换
记住先ESC退出输入模式,再执行命令操作。
课后练习
练习1(基础)
请执行以下操作:
- 使用VIM创建一个名为
practice.txt的文件,输入以下内容:bashHello Linux Welcome to VIM world This is a practice file - 练习光标移动命令:
- 使用
h/j/k/l移动光标 - 跳转到行首和行尾
- 跳转到文件开头和结尾
- 使用
- 掌握基本的模式切换:
- 从命令模式进入输入模式
- 从输入模式返回命令模式
- 进入和退出底线命令模式
💡 提示:使用i进入输入模式,按ESC返回命令模式。
练习2(进阶)
请尝试:
- 练习编辑操作:
- 在第一行前插入一行:"VIM Practice"
- 在最后一行后添加一行:"End of file"
- 删除第三行
- 复制第二行并粘贴到文件末尾
- 练习查找和替换:
- 搜索单词"VIM"
- 将所有"VIM"替换为"VI Editor"
- 练习文件操作:
- 保存文件但不退出
- 退出编辑器
- 保存并退出
💡 提示:使用O在当前行上方插入新行,使用yy复制行,使用p粘贴。
练习3(拓展)
请尝试:
- 尝试使用分屏编辑功能,同时打开两个文件
- 学习并使用批量注释和取消注释命令
- 配置VIM的基本选项,如显示行号、自动缩进等
- 尝试使用VIM编辑一个简单的Shell脚本,体验语法高亮功能
💡 提示:使用:split水平分屏,使用:vsplit垂直分屏,使用:set nu显示行号。