SuperAPI AI 工具集

using-tmux-for-interactive-commands

编程与开发

查看项目

更新于 10-16 00:30

技能介绍

用途:当交互式 CLI 工具(vim、nano、交互式 git rebase、Python/Node 等 REPL、htop 等全屏应用)无法通过普通 bash 控制时,使用 tmux 的 detached 会话,通过 send-keys 发送输入、用 capture-pane 读取屏幕输出,实现程序化控制。不应使用于普通非交互命令、可通过 stdin 重定向输入的命令或无需交互的一次性命令。

主要能力与用法: 启动会话:tmux new-session -d -s <name> <command> 发送输入:tmux send-keys -t <name> 'text' Enter 捕获输出:tmux capture-pane -t <name> -p 结束会话:tmux kill-session -t <name> 列出会话:tmux list-sessions

基本流程:创建 detached 会话并启动交互命令;等待 100-500ms 让其初始化;用 send-keys 发送输入(支持 Enter、Escape、C-c、Up、Space、BSpace 等 tmux 键名);用 capture-pane -p 查看当前屏幕状态;重复收发;完成后终止会话。可在创建时用 -c /path/to/repo 指定工作目录。

示例:tmux new-session -d -s python python3 -i;tmux send-keys -t python 'import math' Enter;tmux capture-pane -t python -p。vim 场景:tmux new-session -d -s vim vim /tmp/file.txt,等待后发送 'i' 'New content' Escape ':wq' Enter。交互式 rebase:tmux new-session -d -s rebase -c /repo/path git rebase -i HEAD~3,等待后 capture-pane 查看并发送编辑指令。

限制与常见错误:会话刚启动立即 capture 可能得到空白,应先 sleep;发送文本后必须单独发送 Enter(不能依赖 \n);键名需使用 tmux 名称如 Enter、Escape,而非 \n;结束务必 kill-session 避免遗留会话。资料未提供官方收费、平台支持范围与具体版本要求。