# 文本编辑 - 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!` | 掌握普通模式、插入模式、命令行模式 + 块可视模式,即可高效完成大多数编辑任务。