VHS Recorder
Create terminal recordings with Charm's VHS. Use when creating CLI demos, README animations, documentation videos.
Prerequisites
- -
vhs installed (brew install vhs / go install github.com/charmbracelet/vhs@latest) - INLINECODE3 and
ffmpeg on PATH
Tape File Structure
CODEBLOCK0
Core Commands
| Command | Purpose |
|---|
| INLINECODE5 | Type text (uses TypingSpeed setting) |
INLINECODE6 / Tab / INLINECODE8 |
Key presses |
|
Up /
Down /
Left /
Right | Arrow navigation |
|
PageUp /
PageDown | Page navigation |
|
Ctrl+C /
Ctrl+D /
Ctrl+L | Signal/EOF/clear combos |
|
Wait /
Wait /pattern/ | Wait for prompt or regex match |
|
Sleep 2s | Fixed pause (supports ms/s/m) |
|
Hide/
Show | Hide setup/cleanup from output |
|
Type@50ms "text" | Override typing speed inline |
|
Backspace N /
Delete N | Delete N chars back/forward |
|
Copy /
Paste | Clipboard operations |
|
Screenshot path.png | Capture single frame |
|
Env VAR "value" | Set environment variable |
Essential Settings
| Setting | Default | Notes |
|---|
| Width/Height | 1200/600 | Terminal dimensions in pixels |
| FontSize |
32 | Text size; FontFamily for custom fonts |
| TypingSpeed | 50ms | Per-char delay (override with
Type@Xms) |
| Theme | - | Use
vhs themes to list all available |
| Padding | 40 | Border space; LetterSpacing/LineHeight also available |
Timing & Patterns
3-2-1 Rule: 3s after important commands, 2s between actions, 1s for transitions
- - Clean start:
Hide → Type "clear" → Enter → INLINECODE35 - Command-wait:
Type → Enter → Wait → INLINECODE39 - Fast hidden: INLINECODE40
- ASCII preview:
Output demo.ascii for instant test
Output Formats
| Format | Use Case |
|---|
| INLINECODE42 | Web/README (universal) |
| INLINECODE43 / INLINECODE44 |
Social media / modern browsers |
|
.ascii | Preview/test (instant, no ffmpeg) |
|
frames/ | PNG sequence for post-processing |
Quick Fixes
| Issue | Solution |
|---|
| Commands too fast | Add Wait + Sleep 2s after Enter |
| Messy terminal |
Hide →
clear →
Show at start |
| Inconsistent pacing | Follow 3-2-1 timing rule |
CLI Commands
CODEBLOCK1
References
VHS Recorder
使用 Charm 的 VHS 创建终端录制。适用于制作 CLI 演示、README 动画、文档视频等场景。
前置条件
- - 已安装 vhs(brew install vhs / go install github.com/charmbracelet/vhs@latest)
- PATH 中包含 ttyd 和 ffmpeg
磁带文件结构
tape
Output demo.gif # 首先指定输出
Set Width 1200 # 其次设置参数
Set Theme Catppuccin Mocha
Require git # 第三设置依赖
Hide # 隐藏设置过程
Type cd /tmp && clear
Enter
Show
Type your command # 主要录制内容
Enter
Wait
Sleep 2s
核心命令
| 命令 | 用途 |
|---|
| Type text | 输入文本(使用 TypingSpeed 设置) |
| Enter / Tab / Space |
按键操作 |
| Up / Down / Left / Right | 方向键导航 |
| PageUp / PageDown | 翻页导航 |
| Ctrl+C / Ctrl+D / Ctrl+L | 信号/EOF/清屏组合键 |
| Wait / Wait /pattern/ | 等待提示符或正则匹配 |
| Sleep 2s | 固定暂停(支持 ms/s/m 单位) |
| Hide/Show | 隐藏/显示设置和清理过程 |
| Type@50ms text | 内联覆盖输入速度 |
| Backspace N / Delete N | 向后/向前删除 N 个字符 |
| Copy / Paste | 剪贴板操作 |
| Screenshot path.png | 捕获单帧画面 |
| Env VAR value | 设置环境变量 |
重要设置
| 设置项 | 默认值 | 说明 |
|---|
| Width/Height | 1200/600 | 终端像素尺寸 |
| FontSize |
32 | 文字大小;FontFamily 用于自定义字体 |
| TypingSpeed | 50ms | 每字符延迟(可用 Type@Xms 覆盖) |
| Theme | - | 使用 vhs themes 查看所有可用主题 |
| Padding | 40 | 边框间距;LetterSpacing/LineHeight 也可用 |
时间控制与模式
3-2-1 规则:重要命令后等待 3 秒,操作间等待 2 秒,过渡等待 1 秒
- - 干净启动:Hide → Type clear → Enter → Show
- 命令等待:Type → Enter → Wait → Sleep 2s
- 快速隐藏:Type@10ms setup command
- ASCII 预览:Output demo.ascii 用于即时测试
输出格式
| 格式 | 使用场景 |
|---|
| .gif | 网页/README(通用格式) |
| .mp4/.webm |
社交媒体/现代浏览器 |
| .ascii | 预览/测试(即时生成,无需 ffmpeg) |
| frames/ | PNG 序列,用于后期处理 |
快速修复
| 问题 | 解决方案 |
|---|
| 命令执行过快 | 在 Enter 后添加 Wait + Sleep 2s |
| 终端显示混乱 |
开头使用 Hide → clear → Show |
| 节奏不一致 | 遵循 3-2-1 时间规则 |
CLI 命令
bash
vhs demo.tape # 运行磁带文件
vhs themes # 列出所有可用主题
vhs manual # 显示完整命令参考
参考资料