- 教程
【免费下载链接】school-of-sre
At LinkedIn, we are using this curriculum for onboarding our entry-level talents into the SRE role.
Vim 是几乎所有 Linux 发行版中都预装的开源命令行文本编辑器,也是 SRE 登录服务器后修改配置、编辑脚本时最顺手可用的工具之一。本文是 School of SRE 课程 Linux-Intermediate 阶段《Introduction to Vim》的完整指南,围绕「打开文件、进入插入模式、保存文件、退出编辑器」这一条最核心的操作主线展开,并结合后续 Bash 脚本编写 的实战需求,帮助读者在学完本节后能立刻在真实服务器上创建和编辑文件,为下一节的脚本编写打下基础。
为什么 SRE 必须先掌握 Vim
作为 SRE,日常工作中经常需要登录到服务器上:
- 修改应用或系统的配置文件;
- 编辑、排错和修改运维脚本;
- 在无法使用图形界面(无 GUI 的服务器、容器、跳板机环境)的情况下完成文件操作。
在这些场景里,Vim 是「开箱即用」的选择:它开源、免费、几乎存在于所有 Linux 发行版中,且不依赖图形界面。本课程 Linux-Intermediate 课程入口 明确指出课程环境基于 RedHat Enterprise Linux(RHEL)8 的 Docker 容器,并以前置课程 Linux 基础 为背景——在这样的纯命令行环境里,Vim 就是最主要的文本编辑手段。
更重要的是,Vim 是本节与下一节之间的关键衔接:在 Bash 脚本编写 中,作者明确表示整个脚本编写过程都将使用 Vim 作为编辑器。也就是说,本节的i、ESC、:w、:q等操作,会直接用于后续编写firstscript.sh、backup.sh等真实脚本。掌握本节内容,是进入脚本编写的前置条件。
Vim 的模式模型:先理解「为什么输入不了文字」
Vim 与普通编辑器最大的不同在于它是一个模式化编辑器(modal editor)。绝大多数新手第一次打开 Vim 后立刻输入文字却发现没有任何反应,原因就在于 Vim 启动后默认处于普通模式(Normal mode),此时键盘按键被解释为编辑命令(如移动光标、删除字符),而不是向文件输入文本。
与本文直接相关的三种模式如下:
| 模式 | 进入方式 | 作用 |
|---|---|---|
| 普通模式(Normal mode) | Vim 启动后的默认模式;在插入模式中按ESC返回 | 执行移动、删除、复制、粘贴等编辑命令 |
| 插入模式(Insert mode) | 普通模式下按i | 直接向文件输入文字 |
| 命令行模式(Command-line mode) | 普通模式下按:(冒号,Shift+;) | 输入w、q、wq等 Ex 命令并回车执行 |
理解了「普通模式负责命令、插入模式负责输入」这一核心心智模型,剩下的就是记住几个最简单的切换键。
打开文件并进入插入模式
1. 用vim filename打开文件
在终端执行:
vim filenamefilename可以是已存在的文件,也可以是不存在的新文件名。若文件已存在,Vim 会将其内容读入缓冲区并显示;若文件不存在,Vim 会打开一个空缓冲区,保存时才会真正创建文件。
打开后你会发现:直接敲键盘写文字是不生效的——因为此时仍处于普通模式(界面底部左侧没有任何模式指示)。这正是无数新手「卡住」的第一道门槛。
2. 按i进入插入模式
在普通模式下按字母i(insert 的缩写),Vim 会切换进入插入模式。此时屏幕左下角会出现-- INSERT --的提示(见上文第一张截图),表示你现在可以正常向文件输入内容了。
3. 按ESC返回普通模式
输入完成后,按键盘左上角的ESC键退出插入模式,回到普通模式,左下角的-- INSERT --提示随之消失。
除了i,Vim 还提供了多个进入插入模式的变体,在编辑配置文件时非常实用:
| 按键 | 效果 |
|---|---|
i | 在当前光标所在字符之前插入 |
a | 在当前光标所在字符之后插入(append) |
A | 在当前行末尾追加 |
o | 在当前行下方新建一行并插入 |
O | 在当前行上方新建一行并插入 |
SRE 在给配置文件追加新的参数行、或在行尾补充注释时,A与o的利用率极高。
保存文件::+w
在插入模式中输入完内容后,按ESC回到普通模式,然后按:(冒号,即Shift+;)进入命令行模式,输入w(write 的缩写),最后回车执行,文本就会被写入文件。
完整操作序列为:
i → 进入插入模式,输入内容 ESC → 返回普通模式 :w → 进入命令行模式,写入保存 回车 → 执行保存:会出现在终端界面左下角(见上文第二张截图),提示当前已进入命令行模式。保存成功后,Vim 会在底部状态栏提示写入的文件名与行数/字符数等信息。
退出 Vim::q、:wq、:q!
退出 Vim 对初学者而言往往是最大的挑战——因为它不像普通编辑器那样有明确的「关闭按钮」。退出的关键同样在于:先按ESC回到普通模式,再按:进入命令行模式,然后根据需求选择不同的退出命令。
下表完整列出本文档给出的三种退出方式:
| Vim 命令 | 说明 |
|---|---|
:q | 退出文件(quit)。若文件存在未保存的修改,Vim拒绝退出并给出提示,避免误丢数据 |
:wq | 先写入(保存)再退出文件,相当于:w+:q的合并操作 |
:q! | 不保存任何修改,强制退出(!表示强制,用于放弃未保存的改动) |
组合起来看,一条非常实用的操作链是:
- 修改后想保存并退出:
ESC→:wq→ 回车; - 修改后发现改错了、想放弃并退出:
ESC→:q!→ 回车; - 只想快速看看文件后退出:
ESC→:q→ 回车。
!(感叹号)是 Vim 中表示「强制执行」的修饰符,q!可以跳过「有未保存修改」的保护检查,直接放弃退出。理解这一点后,w、q、!三个符号的组合逻辑就一目了然了。
面向 SRE 场景的常用 Vim 速查(进阶补充)
本节是入门内容的自然延伸,用于满足「登录服务器修改配置、编辑脚本」时最常见的操作需求。以下命令均在普通模式下使用(进入插入模式的按键除外):
| 操作需求 | 按键/命令 | 说明 |
|---|---|---|
| 移动光标 | h/j/k/l | 左 / 下 / 上 / 右移动光标 |
| 删除光标所在字符 | x | 相当于普通编辑器的 Delete |
| 删除当前行 | dd | 删除整行,适合清理脚本中的废弃配置 |
| 撤销上一步操作 | u | 误删后立即恢复 |
| 查找文本 | /keyword后回车 | 在文件中搜索关键字,n跳转到下一个匹配 |
| 跳到文件末尾 | G | 查看长日志或长配置时常用 |
| 跳到指定行 | :行号后回车 | 例如:42直接跳到第 42 行 |
| 显示/取消行号 | :set number/:set nonumber | 排查脚本报错行号时非常实用 |
这些命令并不要求一次性记住,建议在练习中按需查阅、逐步内化。对于想要快速练习的读者,可以直接回到本仓库 Linux 基础 与 Bash 脚本编写 中的真实示例文件反复演练。
实战衔接:在下一节用 Vim 编写你的第一个脚本
本节的 Vim 技能将在下一节 Bash 脚本编写 中立即投入使用。届时标准的操作流程是:
- 用
vim firstscript.sh打开(或创建)脚本文件; - 按
i进入插入模式,输入脚本内容,例如#!/bin/bash、注释和echo "Hello world!"; - 按
ESC返回普通模式,输入:wq保存并退出; - 在终端用
chmod +x firstscript.sh赋予可执行权限,再通过显式路径运行脚本查看输出。
可以看到,本节学到的i、ESC、:w、:wq正是脚本编写全流程的地基。建议按「打开文件 → 输入内容 → 保存 → 退出」的顺序在 RHEL 8 容器中完整走通几遍,形成肌肉记忆;熟练掌握这几个基础命令后,再逐步扩展到移动、删除、查找等进阶操作,最终做到在服务器上「零障碍」地完成任何文件编辑任务。
- 教程
【免费下载链接】school-of-sre
At LinkedIn, we are using this curriculum for onboarding our entry-level talents into the SRE role.
相关推荐
5个必备技巧:彻底掌握CudaText跨平台编辑器
5个必备技巧:彻底掌握CudaText跨平台编辑器 CudaText是一款功能强大的跨平台文本编辑器,采用Free Pascal编写,基于Lazarus开发环境
代码编辑器开发工具桌面应用Puck离线编辑功能:PWA技术在编辑器中的应用
Puck离线编辑功能:PWA技术在编辑器中的应用 你是否遇到过这样的场景:在没有网络连接的情况下,急需编辑React页面内容却无法操作?Puck(The vis
前端低代码UI组件Requestly代码编辑器集成:在VSCode中直接编辑API配置
Requestly代码编辑器集成:在VSCode中直接编辑API配置 Requestly作为前端开发者和QA工程师最流行的调试工具,提供了强大的代码编辑器集成功
文档开发工具接口测试
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考