Skip to content

Vim 编辑器极简生存与进阶指南 ​

定位:拒绝繁琐的花哨配置与数以百计的偏门快捷键。本指南只沉淀在 Linux 生产环境中修改配置文件、查看日志时最高频、最实用、50年不落伍的 Vim 生存技能。


1. 核心底座:三大模式流转 ​

Vim 的设计哲学是“让双手不离主键盘区”。理解并熟练切换以下三大模式是所有操作的基石:

                    i / a / o (进入编辑)
   ┌──────────────────────────────────────────────┐
   │                                              │
   ▼                                              │
编辑模式 (Insert) <─────────────────────────── 命令模式 (Normal) ───────────────────────────> 末行模式 (Command-line)
                     Esc (退回命令模式)       ▲                            : / ? (进入末行)
                                              │                            按 Enter 执行后返回
                                              └────────────────────────────┘
  1. 命令模式 (Normal Mode):
    • 特点:刚打开文件时的默认模式。任何敲击都被视为快捷键指令(如移动、复制、删除),此时无法直接打字。
    • 保命键:无论处于什么状态,连按两下 Esc 键都能安全退回到命令模式。
  2. 编辑模式 (Insert Mode):
    • 特点:用于真正的文本录入。屏幕左下角会显示 -- INSERT --。
  3. 末行模式 (Command-line Mode):
    • 特点:在命令模式下输入 : 触发,光标停留在屏幕最后一行。用于执行保存、退出、查找、替换和设置环境。

2. 极简生存:开门四件事 ​

当你被困在 Vim 里不知道如何退出时,请保持冷静,按 Esc 确保进入命令模式,然后使用以下指令:

2.1 打开文件 ​

bash
vim app.conf         # 打开或新建文件
vim +10 app.conf     # 打开文件并直接跳转到第 10 行 (排查错误神技)

2.2 进入编辑 (命令模式下) ​

  • i:在当前光标所在位置前开始插入文本 (最常用)。
  • a:在当前光标所在位置后开始追加文本。
  • o:在当前光标所在行的下方新开一行,并进入编辑模式 (修改配置极方便)。

2.3 退出与保存 (末行模式下) ​

  • :w:保存当前修改。
  • :q:退出(若文件未修改)。
  • :wq:保存并退出 (日常工作高频组合)。
  • :q!:强制退出,不保存任何修改 (改错配置时的救命稻草)。

3. 高效移动与文本编辑 (命令模式) ​

在命令模式下,善用以下快捷键,可以成倍提升你在服务器上的配置文件修改效率。

3.1 快速光标移动 ​

  • G:直接跳转到文件的最后一行 (翻阅日志尾部必备)。
  • gg:直接跳转到文件的第一行。
  • 0 (数字零):跳转到当前行的行首。
  • $:跳转到当前行的行尾。
  • Ctrl + f:向下翻一页;Ctrl + b:向上翻一页。

3.2 复制、粘贴与删除 ​

  • dd:删除 (剪切) 当前行。
  • Ndd:删除当前行开始的 N 行 (如 3dd 表示删除 3 行)。
  • yy:复制当前行。
  • Nyy:复制当前行开始的 N 行。
  • p (小写):在当前光标所在行的下方粘贴。
  • P (大写):在当前光标所在行的上方粘贴。
  • x:删除当前光标所在的单个字符。

3.3 撤销与反撤销 ​

  • u:撤销 (Undo) 上一步错误操作 (Windows 下的 Ctrl+Z)。
  • Ctrl + r:反撤销 (Redo),恢复刚才撤销的内容。

4. 文本检索与全量替换 (末行模式) ​

排查复杂配置文件(如 Nginx、Docker Compose)时,快速定位关键字的能力至关重要。

4.1 关键词检索 ​

在命令模式下,按下 / 或 ? 进入末行模式:

  • /keyword:向文件尾部搜索关键字。
  • ?keyword:向文件头部搜索关键字。
  • 切换匹配项:按 n 跳转到下一个匹配项,按 N 跳转到上一个匹配项。

4.2 文本替换 ​

在末行模式(输入 :)下执行:

  • :s/old/new/:替换当前行第一个匹配的 old 为 new。
  • :s/old/new/g:替换当前行所有匹配的 old 为 new。
  • :%s/old/new/g:全量替换,将整篇文档中所有的 old 替换为 new (慎用)。

4.3 辅助显示设置 ​

  • :set nu:显示行号 (Number)。
  • :set nonu:隐藏行号。

5. 生产环境防踩坑守则 ​

  1. 临时 .swp 文件冲突问题:
    • 现象:当异常断开连接(如终端关闭)后重新打开文件,Vim 会弹出警告提示存在 .filename.swp。
    • 原因:Vim 会自动生成临时交换文件以防数据丢失。
    • 应对:若确定之前的修改不需要或已恢复,先退出 Vim,然后在终端执行 rm -f .filename.swp 彻底清理隐藏的交换文件,否则每次打开都会弹窗。
  2. 复制错位/格式杂乱问题:
    • 现象:从外部复制一段带有缩进的代码/配置,粘贴到 Vim 的编辑模式时,排版全变乱了。
    • 原因:Vim 的自动缩进机制误将粘贴的内容识别为手动输入。
    • 应对:粘贴前,在末行模式输入 :set paste 开启粘贴模式,然后再进入编辑模式粘贴,即可完美保持原格式。粘贴完成后输入 :set nopaste 恢复。

6. 外部优质资源参考 ​


Generated by Ark Gardener based on user workflow.

方舟 · Ark