跳转至

TermCap

% TERMCAP(1) % rexwzh % 2025年2月

概要

termcap record [output_path] [-c COMMAND] [-g GEOMETRY] [-h]

termcap render input_file [output_path] [-D DELAY] [-m MIN_DURATION] [-M MAX_DURATION] [-s] [-t TEMPLATE] [--help]

termcap [output_path] [-c COMMAND] [-D DELAY] [-g GEOMETRY] [-m MIN_DURATION] [-M MAX_DURATION] [-s] [-t TEMPLATE] [--help]

描述

termcap 将终端会话录制为动画 SVG 格式。

命令

termcap 的默认行为是渲染 shell 会话的 SVG 动画。如果没有提供输出文件名,将自动生成一个随机的临时文件名。

termcap record

以 asciicast v2 格式录制终端会话。录制文件是一个文本文件,包含时间信息以及终端会话期间屏幕上显示的内容。可以编辑它来更改录制的时间或终端屏幕上显示的信息。

termcap render

从 asciicast v1 或 v2 格式的录制文件渲染动画 SVG。这允许以 SVG 格式渲染使用 asciinema 制作的任何录制。也可以渲染静止帧。

选项

-c, --command=COMMAND

指定要录制的程序及其可选参数。COMMAND 必须是一个字符串,列出要执行的程序以及所有可供该程序使用的参数。例如 --command='python -h' 将使 termcap 录制 Python 解释器的用法。如果未设置此选项,termcap 将录制由 $SHELL 环境变量指定的程序或 /bin/sh

-D, --loop-delay=DELAY

动画两次连续循环之间的延迟持续时间(以毫秒为单位)。

-g, --screen-geometry=GEOMETRY

用于渲染动画的终端屏幕的几何尺寸。几何尺寸必须以列数和行数的形式给出,中间用字符 "x" 分隔。例如 "82x19" 表示 82 列 19 行的屏幕。

-h, --help

打印用法并退出

-m, --min-frame-duration=MIN_DURATION

设置帧的最小持续时间(以毫秒为单位)。持续时间小于 MIN_DURATION 毫秒的帧将与连续帧合并。termcap 的默认行为是为终端屏幕的每次更新生成一帧,但是当录制频繁更新屏幕的命令时,这会导致动画文件大小激增。强制执行最小帧持续时间有助于减少动画的帧数,从而有助于控制动画的大小。MIN_DURATION 默认为 1 毫秒。

-M, --max-frame-duration=MAX_DURATION

将帧的最大持续时间设置为 MAX_DURATION 毫秒。持续时间超过 MAX_DURATION 毫秒的帧,其持续时间将被减少到 MAX_DURATION。

-t, --template=TEMPLATE

设置用于渲染 SVG 动画的 SVG 模板。TEMPLATE 可以是默认模板之一(base16_default_dark, dracula, gjm8_play, gjm8_single_loop, gjm8, powershell, progress_bar, putty, solarized_dark, solarized_light, terminal_app, ubuntu, window_frame_js, window_frame_powershell, window_frame, xterm)或有效模板的路径。

-s, --still-frames

输出 SVG 格式的静止帧而不是动画 SVG。如果指定了此选项,output_path 指的是帧的目标目录。

SVG 模板

模板使得可以通过多种方式自定义 termcap 生成的 SVG 动画,包括但不限于:

  • 指定用于渲染终端会话的颜色主题和字体
  • 向动画添加自定义终端窗口框架,使其看起来像真正的终端
  • 添加 JavaScript 代码以暂停动画、跳转到特定帧等

有关更多详细信息,请参阅专用手册页

环境变量

如果未指定 --command 选项,termcap 将生成 SHELL 环境变量指定的 shell,如果未设置该变量,则生成 /bin/sh

示例

录制终端会话并生成名为 animation.svg 的 SVG 动画:

termcap animation.svg

录制终端会话并使用特定模板渲染:

termcap -t ~/templates/my_template.svg

录制特定程序,例如带有 pretty printing 选项的 IPython:

termcap -c 'ipython --pprint'

录制具有特定屏幕几何尺寸的终端会话:

termcap -g 80x24 animation.svg

以 asciicast v2 格式录制终端会话:

termcap record recording.cast

从 asciicast 格式的录制文件渲染 SVG 动画:

termcap render recording.cast animation.svg

强制执行最小和最大帧持续时间:

termcap -m 17 -M 2000

指定动画循环之间 2 秒的延迟:

termcap -D 2000

使用特定模板渲染静止帧而不是动画 SVG:

termcap -s -t gjm8_play