charmbracelet/vhs

GitHub: charmbracelet/vhs

一个将终端会话录制为可回放 GIF/ASCII 的 CLI 工具,解决自动化演示与回归测试的一致性难题。

Stars: 19385 | Forks: 405

# VHS


Latest Release Go Docs Build Status

编写终端 GIF 以用于集成测试和演示你的 CLI 工具。 Welcome to VHS 上述示例是使用 VHS 生成的([查看源码](./examples/neofetch/neofetch.tape))。 ## 教程 要开始,请[安装 VHS](#installation) 并创建一个新的 `.tape` 文件。 ``` vhs new demo.tape ``` 用你喜欢的 `$EDITOR` 打开 `.tape` 文件。 ``` vim demo.tape ``` 磁带文件由一系列[命令](#vhs-command-reference)组成。 这些命令是 在虚拟终端上执行 VHS 操作的指令。欲了解所有可能的命令,请参见[命令参考](#vhs-command-reference)。 ``` # 我们应该在哪里写 GIF? Output demo.gif # 设置一个 1200x600 终端,字体为 46px。 Set FontSize 46 Set Width 1200 Set Height 600 # 在终端中输入命令。 Type "echo 'Welcome to VHS!'" # 暂停以产生戏剧效果... Sleep 500ms # 按下回车运行命令。 Enter # 稍作欣赏输出。 Sleep 5s ``` 完成后,保存文件并将其输入 VHS。 ``` vhs demo.tape ``` 大功告成!你应该会看到一个名为 `demo.gif` 的新文件(或者你命名的 `Output`)在当前目录中。 A GIF produced by the VHS code above 更多示例请查看 [`examples/`](https://github.com/charmbracelet/vhs/tree/main/examples) 目录。 ## 安装 使用软件包管理器: ``` # macOS 或 Linux brew install vhs # Arch Linux(顺便一提) pacman -S vhs # Nix nix-env -iA nixpkgs.vhs # 使用 scoop 的 Windows scoop install vhs ``` 或者,使用 Docker 直接运行 VHS(包含依赖项): ``` docker run --rm -v $PWD:/vhs ghcr.io/charmbracelet/vhs .tape ``` 或者,直接下载它: - [软件包][releases] 以 Debian 和 RPM 格式提供 - [二进制文件][releases] 适用于 Linux、macOS 和 Windows 或者,使用 `go` 安装: ``` go install github.com/charmbracelet/vhs@latest ```
Windows、Debian、Ubuntu、Fedora、RHEL、Void 安装说明 - Debian / Ubuntu ``` # Debian/Ubuntu sudo mkdir -p /etc/apt/keyrings curl -fsSL https://repo.charm.sh/apt/gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/charm.gpg echo "deb [signed-by=/etc/apt/keyrings/charm.gpg] https://repo.charm.sh/apt/ * *" | sudo tee /etc/apt/sources.list.d/charm.list # 从 https://github.com/tsl0922/ttyd/releases 安装 ttyd sudo apt update && sudo apt install vhs ffmpeg ``` - Fedora / RHEL ``` echo '[charm] name=Charm baseurl=https://repo.charm.sh/yum/ enabled=1 gpgcheck=1 gpgkey=https://repo.charm.sh/yum/gpg.key' | sudo tee /etc/yum.repos.d/charm.repo # 从 https://github.com/tsl0922/ttyd/releases 安装 ttyd sudo yum install vhs ffmpeg ``` - Void ``` sudo xbps-install vhs ``` - Windows ``` winget install charmbracelet.vhs # 或 scoop scoop install vhs ```
## 录制磁带 VHS 具备从你的终端操作生成磁带文件的能力! 要录制磁带文件,请运行: ``` vhs record > cassette.tape ``` 执行你想要的操作,然后退出终端会话以停止录制。 你可能需要手动编辑生成的 `.tape` 文件以添加设置或修改操作。 接着,你可以生成 GIF: ``` vhs cassette.tape ``` ## 发布磁带 VHS 允许你将 GIF 发布到我们的服务器,以便与朋友和同事轻松分享。 指定要分享的文件,然后使用 `publish` 子命令将其托管在 `vhs.charm.sh` 上。 输出将为你提供可通过浏览器、HTML 和 Markdown 分享 GIF 的链接。 ``` vhs publish demo.gif ``` ## VHS 服务器 VHS 内置 SSH 服务器!当你自建 VHS 时,可以像本地安装一样访问它。 VHS 将拥有对主机命令和应用程序的访问权限,因此你无需在机器上安装它们。 要启动服务器,请运行: ``` vhs serve ```
配置选项 - `VHS_PORT`:监听端口(`1976`) - `VHS_HOST`:监听主机(`localhost`) - `VHS_GID`:以该组 ID 运行服务器(当前用户的 GID) - `VHS_UID`:以该用户 ID 运行服务器(当前用户的 UID) - `VHS_KEY_PATH`:用于 SSH 的密钥路径(`.ssh/vhs_ed25519`) - `VHS_AUTHORIZED_KEYS_PATH`:授权密钥文件路径(空,允许公开访问)
然后,通过 `ssh` 从另一台机器访问 VHS: ``` ssh vhs.example.com < demo.tape > demo.gif ``` ## VHS 命令参考 有一些基本的 VHS 命令类型: - [`Output `](#output):指定文件输出 - [`Require `](#require):指定磁带文件所需的程序 - [`Set Value`](#settings):设置录制设置 - [`Type ""`](#type):模拟按键输入 - [`Left`](#arrow-keys) [`Right`](#arrow-keys) [`Up`](#arrow-keys) [`Down`](#arrow-keys):方向键 - [`Backspace`](#backspace) [`Enter`](#enter) [`Tab`](#tab) [`Space`](#space):特殊键 - [`ScrollUp`](#scroll-up--down) [`ScrollDown`](#scroll-up--down):滚动终端视口 - [`Ctrl[+Alt][+Shift]+`](#ctrl):按下控制键和/或修饰键 - [`Sleep
标签:Charm工具, EVTX分析, GIF录制, Go语言, Home Video Recorder, SEO: CLI测试工具, SEO: VHS CLI, SEO: 命令行GIF, SEO: 终端录制, SOC Prime, tape文件, VHS, 内存分配, 命令行演示, 开发工具, 日志审计, 测试工具, 程序破解, 终端录制, 自动化演示, 虚拟终端, 视频录制, 请求拦截, 集成测试