单元四 上云 · 第 17 课
Vim 基础
服务器上没有记事本,但几乎每台都有 Vim。它的用法和普通编辑器很不一样,先学会十几个按键,就足够应付修改配置文件了。
本课目标
- 理解 Vim 的“模式”。
- 会打开、编辑、保存、退出,会撤销和查找。
- 用 Vim 在服务器上写好部署要用的
.env文件。
先懂概念:两种模式
普通编辑器打开就能打字。Vim 不一样,它有几种模式:
| 模式 | 按什么进入 | 这时按键的作用 |
|---|---|---|
| 普通模式 | 打开文件时默认就是;任何时候按 Esc 回来 | 按键是“命令”:移动、删除、复制 |
| 插入模式 | 在普通模式按 i | 按键就是打字 |
| 命令行模式 | 在普通模式按 : | 在底部输入命令,比如保存、退出 |
可以把普通模式想成拿着遥控器,插入模式想成拿着键盘。新手最常见的困惑就是“我按的字怎么没出来”,那是因为你还在遥控器模式。
不知道自己在哪个模式?按两下 Esc,你一定回到了普通模式。
跟着做
1. 安装
登录服务器,确保装了完整版的 Vim:
sudo apt install -y vim2. 第一次编辑
cd ~
vim hello.txt- 按
i进入插入模式,屏幕底部显示-- INSERT --。 - 输入几行字,比如“我的第一个 Vim 文件”。
- 按
Esc回到普通模式。 - 输入
:wq,回车。w是保存(write),q是退出(quit)。
用 cat hello.txt 确认内容已经保存。
3. 不保存退出
vim hello.txt按 i,随便改几个字,按 Esc,输入 :q! 回车。! 表示“放弃修改,强制退出”。再 cat hello.txt,内容没变。
4. 移动、删除、撤销
再打开 hello.txt,在普通模式下试试:
| 按键 | 作用 |
|---|---|
| 方向键 | 移动光标 |
gg / G | 跳到第一行 / 最后一行 |
0 / $ | 跳到行首 / 行尾 |
dd | 删除当前行 |
yy / p | 复制当前行 / 粘贴到下一行 |
u | 撤销 |
Ctrl + r | 重做(撤销了撤销) |
/关键词 回车 | 查找,按 n 跳到下一个 |
:set number | 显示行号 |
试完用 :q! 退出,不保存。
5. 粘贴大段内容
在自己电脑上复制一段文字,进入 Vim 的插入模式,再用终端的粘贴:Windows 终端按 Ctrl + V 或点鼠标右键,macOS 按 Command + V。
如果粘贴后缩进变得一层比一层深,按 Esc、u 撤销,先输入 :set paste 回车,再按 i 进入插入模式重新粘贴。
6. 实战:写部署用的 .env 文件
周报助手部署到服务器后,同样要从环境变量读取 Key。在服务器上,我们把这些变量写进一个 .env 文件,部署时由 Docker 读取。
cd ~/apps/weekly-report
vim .env按 i,输入下面两行(把 Key 换成你自己的),然后 Esc、:wq 保存:
XAI_API_KEY=sk-你的Key
MODEL=gpt-5.6-sol两条规则一定要遵守:
- 等号两边不要有空格;
- 值不要加引号。下一单元的
docker run --env-file会把引号当成值的一部分,Key 就变成错的了。Docker Compose 读取时会去掉引号,但为了两种方式都能用,课程统一不加引号。
最后把它设成只有你能读写:
chmod 600 .env
ls -l .env应该看到 -rw-------。
用
cat .env检查内容时,屏幕上会显示完整的 Key,注意身边和共享屏幕。只想确认有没有写进去,用grep -c XAI_API_KEY .env,输出1即可。
想多练一会儿
Vim 自带一个 30 分钟的交互式教程,在服务器上运行:
vimtutor常见问题
按了键,屏幕上出现奇怪的字或者光标乱跳? 你在普通模式里打字了。按 Esc、u 撤销,按 i 后再输入。
输入 :wq 提示 E45: 'readonly' option is set 或没有权限? 这个文件需要管理员权限才能修改。用 :q! 退出,在命令前面加 sudo 重新打开,例如 sudo vim /etc/某个文件。
屏幕底部显示 Recording @q? 你不小心按了 q,进入了录制宏的状态,再按一次 q 就好。
自检
- 我能说出普通模式和插入模式的区别。
- 我会用
i、Esc、:wq、:q!。 - 我会用
u撤销、用/查找。 - 服务器上的
~/apps/weekly-report/.env已经写好,权限是-rw-------。