单元四 上云 · 第 17 课

Vim 基础

服务器上没有记事本,但几乎每台都有 Vim。它的用法和普通编辑器很不一样,先学会十几个按键,就足够应付修改配置文件了。

本课目标

  • 理解 Vim 的“模式”。
  • 会打开、编辑、保存、退出,会撤销和查找。
  • 用 Vim 在服务器上写好部署要用的 .env 文件。

先懂概念:两种模式

普通编辑器打开就能打字。Vim 不一样,它有几种模式:

模式按什么进入这时按键的作用
普通模式打开文件时默认就是;任何时候按 Esc 回来按键是“命令”:移动、删除、复制
插入模式在普通模式按 i按键就是打字
命令行模式在普通模式按 :在底部输入命令,比如保存、退出

可以把普通模式想成拿着遥控器,插入模式想成拿着键盘。新手最常见的困惑就是“我按的字怎么没出来”,那是因为你还在遥控器模式。

不知道自己在哪个模式?按两下 Esc,你一定回到了普通模式。

跟着做

1. 安装

登录服务器,确保装了完整版的 Vim:

sudo apt install -y vim

2. 第一次编辑

cd ~
vim hello.txt
  1. 按 i 进入插入模式,屏幕底部显示 -- INSERT --。
  2. 输入几行字,比如“我的第一个 Vim 文件”。
  3. 按 Esc 回到普通模式。
  4. 输入 :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-------。