215 lines
5.1 KiB
Markdown
215 lines
5.1 KiB
Markdown
# 文本编辑 - Vim
|
||
|
||
> Linux 中最常见的文本编辑器,适合终端快速编辑文件。
|
||
|
||
---
|
||
|
||
## 1. 三种模式
|
||
|
||
```
|
||
┌─────────────────────────────────────┐
|
||
│ 插入模式 │
|
||
│ (i / a / o 进入,输入文本) │
|
||
└──────────────┬──────────────────────┘
|
||
│ Esc
|
||
▼
|
||
┌─────────────────────────────────────┐
|
||
│ 普通模式 │
|
||
│ (默认模式,移动/删除/复制/查找) │
|
||
└──────────────┬──────────────────────┘
|
||
│ : 或 /
|
||
▼
|
||
┌─────────────────────────────────────┐
|
||
│ 命令行模式 │
|
||
│ (:w / :q / :s/// / !cmd) │
|
||
└─────────────────────────────────────┘
|
||
```
|
||
|
||
### 1.1 普通模式(默认)
|
||
|
||
- 移动光标、删除、复制、粘贴、查找、执行命令
|
||
|
||
### 1.2 插入模式
|
||
|
||
| 按键 | 说明 |
|
||
|------|------|
|
||
| `i` | 当前字符前插入 |
|
||
| `a` | 当前字符后插入 |
|
||
| `o` | 下一行插入新行 |
|
||
| `I` | 行首插入 |
|
||
| `A` | 行尾插入 |
|
||
| `O` | 上一行插入新行 |
|
||
|
||
按 `Esc` 返回普通模式。
|
||
|
||
### 1.3 命令行模式
|
||
|
||
在普通模式下输入 `:` 或 `/` 进入,用于保存、退出、查找替换、设置选项、执行外部命令。
|
||
|
||
---
|
||
|
||
## 2. 基础操作
|
||
|
||
### 2.1 文件读写
|
||
|
||
| 命令 | 说明 |
|
||
|------|------|
|
||
| `:w` | 保存 |
|
||
| `:q` | 退出 |
|
||
| `:wq` | 保存并退出 |
|
||
| `:q!` | 强制退出不保存 |
|
||
| `:w filename` | 另存为 |
|
||
| `:r filename` | 读取文件内容到当前位置 |
|
||
|
||
### 2.2 调用外部命令
|
||
|
||
| 命令 | 说明 |
|
||
|------|------|
|
||
| `:!command` | 执行外部命令 |
|
||
| `:r !command` | 读取命令输出到当前文件 |
|
||
|
||
```bash
|
||
:!ls # 查看当前目录
|
||
:r !date # 插入当前日期
|
||
```
|
||
|
||
### 2.3 删除、复制、粘贴
|
||
|
||
| 命令 | 说明 |
|
||
|------|------|
|
||
| `d` | 删除 |
|
||
| `dd` | 删除当前行 |
|
||
| `dw` | 删除当前单词 |
|
||
| `y` | 复制 |
|
||
| `yy` | 复制当前行 |
|
||
| `yw` | 复制当前单词 |
|
||
| `p` | 粘贴到后面 |
|
||
| `P` | 粘贴到前面 |
|
||
|
||
配合数字:`3dd` 删除 3 行,`2yy` 复制 2 行。
|
||
|
||
### 2.4 撤销与恢复
|
||
|
||
| 命令 | 说明 |
|
||
|------|------|
|
||
| `u` | 撤销 |
|
||
| `Ctrl + r` | 重做 |
|
||
| `U` | 撤销当前行修改 |
|
||
|
||
---
|
||
|
||
## 3. 多行编辑(重点)
|
||
|
||
### 3.1 可视模式(Visual Mode)
|
||
|
||
在普通模式下按 `v` 进入可视模式,选择区域后可执行删除、复制等操作。
|
||
|
||
| 按键 | 说明 |
|
||
|------|------|
|
||
| `v` | 进入字符可视模式 |
|
||
| `V` | 进入行可视模式 |
|
||
| `Ctrl + v` | 进入块可视模式(多列编辑) |
|
||
|
||
### 3.2 块可视模式(多列编辑)
|
||
|
||
`Ctrl + v` 进入块可视模式后:
|
||
|
||
1. **批量插入**:选中多行开头 → `I` → 输入内容 → `Esc`
|
||
2. **批量删除**:选中多列 → `d` 或 `x`
|
||
3. **批量替换**:选中多列 → `r` → 输入替换字符
|
||
|
||
**示例:在多行行首添加 `#` 注释**
|
||
|
||
```
|
||
1. Ctrl + v 进入块可视模式
|
||
2. j/k 或 G 选择多行
|
||
3. I 进入插入模式
|
||
4. 输入 #
|
||
5. Esc 退出(所有选中行行首都会添加 #)
|
||
```
|
||
|
||
**示例:在多行行首删除 `#`**
|
||
|
||
```
|
||
1. Ctrl + v 进入块可视模式
|
||
2. 选择 # 所在列
|
||
3. d 删除
|
||
```
|
||
|
||
### 3.3 批量缩进
|
||
|
||
| 命令 | 说明 |
|
||
|------|------|
|
||
| `>` |向右缩进 |
|
||
| `<` |向左缩进 |
|
||
| `3>` |连续 3 行向右缩进 |
|
||
| `=` | 自动缩进选中区域 |
|
||
|
||
---
|
||
|
||
## 4. 查找与替换
|
||
|
||
### 4.1 查找
|
||
|
||
```
|
||
/关键字
|
||
n # 下一个
|
||
N # 上一个
|
||
```
|
||
|
||
### 4.2 替换
|
||
|
||
```
|
||
:s/旧内容/新内容/修饰符
|
||
```
|
||
|
||
| 修饰符 | 说明 |
|
||
|--------|------|
|
||
| `i` | 忽略大小写 |
|
||
| `g` | 全局替换(一行内全部) |
|
||
| `gc` | 逐个确认替换 |
|
||
|
||
### 4.3 常用示例
|
||
|
||
```bash
|
||
:s/old/new/ # 替换当前行第一个
|
||
:s/old/new/g # 替换当前行全部
|
||
:%s/old/new/g # 替换全文
|
||
:%s/old/new/gc # 替换全文(逐个确认)
|
||
:1,5s/old/new/g # 替换第 1-5 行
|
||
```
|
||
|
||
---
|
||
|
||
## 5. 常用设置
|
||
|
||
| 命令 | 说明 |
|
||
|------|------|
|
||
| `:set nu` | 显示行号 |
|
||
| `:set nonu` | 隐藏行号 |
|
||
| `:set ic` | 忽略大小写查找 |
|
||
| `:set ai` | 自动缩进 |
|
||
| `:set list` | 显示不可见字符 |
|
||
| `:set wrap` | 自动换行 |
|
||
|
||
### 5.1 文件加密
|
||
|
||
```bash
|
||
:set key=password # 设置密码
|
||
:set key= # 取消密码
|
||
```
|
||
|
||
> 注意:生产环境建议使用系统权限和专业的加密方案。
|
||
|
||
---
|
||
|
||
## 6. 小结
|
||
|
||
| 场景 | 关键命令 |
|
||
|------|---------|
|
||
| 基础编辑 | `i`、`a`、`o`、`dd`、`yy`、`p` |
|
||
| 多行编辑 | `Ctrl + v` + `I` / `d` |
|
||
| 查找替换 | `/`、`:s///g` |
|
||
| 保存退出 | `:wq`、`:q!` |
|
||
|
||
掌握普通模式、插入模式、命令行模式 + 块可视模式,即可高效完成大多数编辑任务。 |