<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>TUI on PlumePHP</title><link>https://plumephp.com/tags/tui/</link><description>Recent content in TUI on PlumePHP</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Mon, 28 Sep 2026 15:00:00 +0800</lastBuildDate><atom:link href="https://plumephp.com/tags/tui/index.xml" rel="self" type="application/rss+xml"/><item><title>CLI 交互与生态：参数解析、配置层级、TUI 与发布</title><link>https://plumephp.com/others-cli-ecosystem/</link><pubDate>Mon, 28 Sep 2026 15:00:00 +0800</pubDate><guid>https://plumephp.com/others-cli-ecosystem/</guid><description>&lt;h2 id="引言"&gt;引言&lt;/h2&gt;
&lt;p&gt;命令行工具是工程师的「自来水」——打开即用、可组合、可脚本化。但一个「好用」的 CLI 不是把参数打完就完事：参数怎么解析才符合直觉（POSIX/GNU 约定）、帮助与错误怎么输出才不骂娘、配置怎么分级（flag &amp;gt; 环境变量 &amp;gt; 配置文件）、要不要交互与 TUI、退出码和 stdout/stderr 怎么约定、以及怎么测试与发布。本文把这些讲透：先讲 CLI 的设计原则，再深入参数解析的规范与坑，接着讲帮助/错误输出、配置层级、交互与 TUI、退出码与流约定、测试与发布流程，最后对比主流语言的 CLI 框架（Go cobra、Rust clap、Python typer 等）。&lt;/p&gt;</description></item><item><title>Rust 命令行工具开发：Clap、TUI 与发布工程</title><link>https://plumephp.com/rust-cli-development/</link><pubDate>Mon, 28 Sep 2026 11:00:00 +0800</pubDate><guid>https://plumephp.com/rust-cli-development/</guid><description>&lt;h2 id="目录"&gt;目录&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="#1-%E4%B8%BA%E4%BB%80%E4%B9%88%E7%94%A8-rust-%E5%86%99-cli"&gt;为什么用 Rust 写 CLI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#2-clap-v4-%E5%8F%82%E6%95%B0%E8%A7%A3%E6%9E%90"&gt;Clap v4 参数解析&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#3-%E5%AD%90%E5%91%BD%E4%BB%A4%E4%B8%8E%E5%A4%8D%E6%9D%82%E5%8F%82%E6%95%B0"&gt;子命令与复杂参数&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#4-tui-%E4%BA%A4%E4%BA%92%E7%95%8C%E9%9D%A2-ratatui"&gt;TUI 交互界面 ratatui&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#5-%E6%97%A5%E5%BF%97%E4%B8%8E%E5%8F%AF%E8%A7%82%E6%B5%8B%E6%80%A7-tracing"&gt;日志与可观测性 tracing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#6-%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E7%AE%A1%E7%90%86"&gt;配置文件管理&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#7-cli-%E9%94%99%E8%AF%AF%E5%A4%84%E7%90%86"&gt;CLI 错误处理&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#8-%E8%BF%9B%E5%BA%A6%E6%9D%A1%E4%B8%8E%E4%BA%A4%E4%BA%92%E5%8F%8D%E9%A6%88"&gt;进度条与交互反馈&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#9-%E5%8F%91%E5%B8%83%E4%B8%8E%E5%88%86%E5%8F%91-cargo-dist"&gt;发布与分发 cargo-dist&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#10-%E9%80%9F%E6%9F%A5%E8%A1%A8%E4%B8%8E%E7%BB%8F%E5%85%B8%E5%B7%A5%E5%85%B7%E6%8B%86%E8%A7%A3"&gt;速查表与经典工具拆解&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id="1-为什么用-rust-写-cli"&gt;1. 为什么用 Rust 写 CLI&lt;/h2&gt;
&lt;p&gt;CLI 工具是 Rust 最成功的应用场景之一。ripgrep（rg）、fd、bat、exa、zoxide、just、cargo 本身就是 Rust 写的。&lt;/p&gt;</description></item></channel></rss>