ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

用 VHS 把 neofetch 录制成终端动画:examples/neofetch 示例全解析

用 VHS 把 neofetch 录制成终端动画:examples/neofetch 示例全解析 开发工具【免费下载链接】vhsYour CLI home video recorder 项目地址https://gitcode.com/gh_mirrors/vh/vhs点击查看免费下载neofetch 是终端里最经典的系统信息展示工具之一而 VHSYour CLI home video recorder则可以把你在终端中的每一次键入、回车与输出完整录制为 GIF、MP4 或 WebM 动画。本篇文章以仓库 examples/neofetch 目录中的示例为骨架逐行拆解 neofetch.tape 这份完整的 VHS 脚本说明 Output、Set、Type、Sleep、Enter、Space 等核心命令的用法并结合配套的 ASCII 素材与源码带你掌握用 VHS 制作一段带开场打字效果 结尾宣传语的终端演示动画的完整流程。示例概览一份完整可运行的 .tape 脚本VHS 的核心概念是.tape文件——它本质上是描述虚拟终端里应该发生什么的一串指令序列。VHS 会启动一个虚拟终端基于 ttyd逐条执行 tape 中的命令并把整个过程渲染成可分享的动画文件。examples/neofetch/neofetch.tape 就是这样一个完整的示例它启动 neofetch、等待命令输出、随后键入两段文案最后收尾。脚本顶部注释给出了最直接的运行方式vhs neofetch.tape执行后会在examples/neofetch/目录下产出neofetch.gif、neofetch.mp4、neofetch.webm以及一帧一帧的 PNG 序列目录frames/。仓库中已提交的 neofetch.gif 就是该脚本的真实渲染结果。从运行方式看 VHS 的基本用法示例注释中使用的vhs neofetch.tape是 VHS 的标准执行方式之一通过 stdin 把 tape 文件内容喂给 VHS。对于已保存的 tape 文件也可以直接作为参数传入vhs neofetch.tape两种方式等效。运行前提是环境中已安装 VHS 及其依赖ttyd与ffmpeg详见仓库根目录 README.md 的 Installation 一节其中 ttyd 负责承载虚拟终端ffmpeg 负责把帧序列编码为 GIF/MP4/WebM。逐行拆解 neofetch.tape完整的脚本只有 16 行指令却覆盖了 VHS 最常用的六类命令。下面逐段解读。声明输出OutputOutput examples/neofetch/neofetch.gif Output examples/neofetch/neofetch.mp4 Output examples/neofetch/neofetch.webm Output examples/neofetch/frames/Output命令用于指定渲染产物的路径与格式VHS 会根据路径扩展名自动选择编码方式且一份 tape 中可以声明多个输出一次录制同时得到多种格式.gif最通用的动图格式适合 README 与文档内嵌.mp4/.webm视频格式体积更小、帧率表现更平滑目录路径以/结尾输出为 PNG 帧序列方便后续用其他工具自行合成。从解析器源码可以印证这一行为在 parser/parser.go 的parseOutput中VHS 通过filepath.Ext读取目标路径的扩展名并存入cmd.Options以此驱动后续的编码流程若扩展名为空且路径不以/结尾则会报错Expected folder with trailing slash——这正是frames/必须带斜杠的原因。设置终端环境SetSet TypingSpeed 75ms Set FontSize 22 Set Width 1300 Set Height 650Set负责配置虚拟终端的全局属性且在 tape 中通常必须放在非设置类命令之前才会生效。本示例用到了四项Set TypingSpeed 75ms设定每个字符的键入间隔。语法上既支持75ms也支持1s也可以用小数0.1表示 100ms。它只影响Type的默认节奏还可以通过Type500ms ...这样的time语法对单条命令进行覆盖Set FontSize 22字号像素直接决定最终画面里文字的物理大小Set Width 1300/Set Height 650终端窗口的像素宽高。这里给出的 1300×650 属于偏宽屏的比例能完整容纳 neofetch 输出后并排展示的系统信息也适合作为演示动图的画幅。除了本示例用到的四项Set家族还支持 Shell、FontFamily、LineHeight、LetterSpacing、Theme、Padding、Margin、WindowBar、BorderRadius、Framerate、PlaybackSpeed、LoopOffset、CursorBlink 等设置完整清单可参考 README.md 的命令参考章节。模拟键入TypeType neofetchType模拟真实键盘输入逐字符打出指定字符串——因此录制画面里能看到光标打字的过程这正是 VHS 演示动图的灵魂所在。第一处键入的是要执行的命令neofetch。注意此时还没有按下回车命令并不会执行画面停留在输入完毕待执行的状态制造出自然的节奏停顿。脚本后半段还有两处Type用来在 neofetch 输出之后继续键入文案Type Welcome to VHS! Type A tool for generating terminal GIFs from code.节奏控制SleepSleep 500ms Sleep 2s Sleep 1 Sleep 5sSleep让录制暂停指定时长是控制动图呼吸感的关键。语法支持时间单位后缀500ms、2s也支持不带单位的秒数1即 1 秒。本示例的四处暂停各有用途Sleep 500ms输入完neofetch后短暂停顿制造即将按下回车的期待感Sleep 2s按下回车后留出足够时间让 neofetch 完成采集并渲染系统信息Sleep 1打完第一句欢迎语后的轻微停顿Sleep 5s收尾让观众把最终画面看够也让动图循环起来更自然。在 parser/parser.go 的parseSleep中时间参数由parseTime统一解析这与 TypingSpeed 的时间语法保持一致。执行命令EnterEnterEnter模拟按下回车键。示例中在键入neofetch后执行它虚拟终端随即运行命令并展示输出。Enter还支持可选的重复次数如Enter 2以及time间隔语法如Tab500ms 2用于连续多次按键的场景。分隔与继续输入SpaceSpaceSpace模拟按下空格键。在 neofetch 输出完成后Space起到两层作用一是把画面从命令输出区切换到可继续输入的提示符区域二是与后续两行Type配合模拟在终端里接着打字的连贯动作——第二行文案 A tool for generating terminal GIFs from code. 前的空格字符正是通过Space打出的。示例的配套素材让 neofetch 输出 VHS 专属信息neofetch.tape本身只负责录而录出来的内容则靠同目录下的三份配套文件定制——它们让 neofetch 的输出不再是普通系统信息而是一幅 VHS 主题的定制海报。ASCII 徽标与着色程序vhs.asciiVHS 字样的纯文本 ASCII 艺术图共 13 行直接嵌入 neofetch 输出顶部colorize-ascii.go一个独立的 Go 小程序用charmbracelet/lipgloss与muesli/termenv把vhs.ascii逐行渲染成紫罗兰渐变色。它定义了 4 个渐变色值#AD92FF→#8056FF按step len(lines) / len(colors)把 13 行分成 4 段分别着色并通过lipgloss.SetColorProfile(termenv.TrueColor)启用真彩色输出vhs-color.ascii运行上述程序后的产物每行都已携带\x1b[38;2;R;G;Bm形式的真彩色 ANSI 转义序列neofetch 可直接渲染彩色徽标。neofetch 自定义配置vhs.conf 是 neofetch 的配置片段把输出信息替换为 VHS 主题内容print_info () { prin prin $(color 5)charmbracelet/vhs prin prin $(color 2)OS Video Home System prin $(color 2)Packages (2) tree-sitter-vhs, vhs-action prin $(color 2)Shell bash 5.2 prin $(color 2)Resolution 1200x600 info Theme theme info Icons icons prin $(color 2)Terminal xterm.js prin $(color 2)Font JetBrains Mono prin $(color 2)Format Graphics Interchange info cols } image_source$(cat ~/.config/neofetch/vhs-color.ascii) gap-18关键点image_source指向前面生成的彩色 ASCII 文件使用时需放到~/.config/neofetch/下gap-18用负间距把徽标与右侧信息行拉近形成并排布局。prin $(color 2)OS Video Home System这类行定义信息标签与取值Resolution 1200x600 与实际画面尺寸呼应最后的 Format Graphics Interchange 更是点题——这段演示动画的格式正是 GIF。从一段示例到你的专属演示理解neofetch.tape之后你可以很容易地把它改造成自己的演示脚本几条常见的定制思路换内容把Type neofetch换成你要演示的命令如Type ls -la、Type git log --oneline并同步调整Sleep时长等待输出换视觉追加Set Theme Catppuccin Frappe主题列表见 THEMES.md或Set WindowBar Colorful、Set BorderRadius 10搭配Set Margin 20改变画面质感换产物按需增删Output行例如只需要 GIF 时删掉 mp4/webm/frames 三行能显著缩短渲染时间加交互在键入命令后配合Ctrl、Tab、Backspace、方向键等按键命令参考 README.md 的 Command Reference录制带真实交互的 TUI 演示隐藏输入对敏感命令使用Hide/Show包裹让键入过程不出现在成片中。从实现层面看这段示例本质上是 VHS 写代码生成终端视频理念的最小闭环.tape定义行为、Set定义舞台、配套素材定义内容一次录制同时产出 GIF、MP4、WebM 与帧序列既可用于 CLI 工具的集成测试也是 README 演示动图的标准生产方式。赞分享开发工具【免费下载链接】vhsYour CLI home video recorder 项目地址https://gitcode.com/gh_mirrors/vh/vhs点击查看免费下载相关推荐解决终端显示混乱Neofetch色彩校准完全指南解决终端显示混乱Neofetch色彩校准完全指南 你是否遇到过在不同终端下运行Neofetch时系统信息显示颜色不一致的问题有时标题变成刺眼的亮红色有时CLI开发工具VHS实战案例用真实项目演示终端录制的最佳实践VHS实战案例用真实项目演示终端录制的最佳实践 VHS是一款强大的命令行工具能够将终端操作录制为高质量的GIF动画。作为终端录制的最佳实践工具VHS通过代开发工具终极指南如何用Neofetch快速掌握系统运行状态与时间信息终极指南如何用Neofetch快速掌握系统运行状态与时间信息 Neofetch是一款用bash 3.2编写的命令行系统信息工具能够快速展示系统的核心运行状CLI开发工具上一篇npx skills 交互式安装答完三个问题装好你的 AI 技能集下一篇如何用ESP32实现Daikin空调的本地无云控制ESP32-Faikin完整指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表