即时模式是 TheFuck 的一项实验性功能,旨在通过避免在生成建议时重新运行先前命令来显著提高更正速度。它采用命令输出日志记录方法来实时捕获和分析命令结果。
在使用 TheFuck 的标准模式时,由于需要重新运行先前命令来分析其输出,会有明显的延迟。即时模式通过在执行命令时使用 Unix 的 script 工具记录命令输出来解决此性能瓶颈,然后在需要更正时从该日志中读取。
由此产生的性能提升可能非常显著,特别是对于执行时间较长的命令。
来源
即时模式不重新执行命令来获取输出,而是
来源
即时模式修改 shell 提示符,包含一个特殊的标记,帮助 TheFuck 在输出日志中识别用户命令
用户命令标记会添加到 shell 提示符中,然后用退格字符隐藏,使其对用户不可见,但仍存在于日志中。
来源
即时模式目前仅在以下 Shell 中支持:
Fish 和 Tcsh 等其他 Shell 没有即时模式的特定实现,它们将回退到常规模式并显示警告。
来源
在 Bash 中,即时模式实现会
如果即时模式已激活,它会增强常规的 app 别名。
来源
Zsh 的实现与 Bash 类似,但包含对 Zsh 的提示符转义语法(%{...%})的特殊处理。
export PS1="%{USER_COMMAND_MARK\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b%}$PS1"
此外,为了让 TheFuck 正常工作,需要禁用 Zsh 的自动更正功能。
来源
首次启用即时模式时,TheFuck 会
THEFUCK_INSTANT_MODE=True 环境变量THEFUCK_OUTPUT_LOG 设置为日志文件路径来源
要启用即时模式,请将 --enable-experimental-instant-mode 标志添加到您的 shell 别名配置中。
此命令配置您的 shell 以便 TheFuck 使用即时模式。
来源
即时模式有特定要求
| 要求 | 详情 |
|---|---|
| Python 版本 | Python 3+ |
| 支持的 Shell | Bash, Zsh |
| Zsh 配置 | 必须禁用自动更正 |
| Unix/Linux | 依赖 script 工具 |
来源
即时模式有几项技术限制:
对于标准、更具兼容性的更正功能,用户可以继续使用 基本用法 中描述的常规模式。
来源
即时模式的优势主要是速度。通过避免重新执行命令,更正几乎可以即时呈现给用户。
| 模式 | 如何获取输出 | 速度 | 兼容性 |
|---|---|---|---|
| 常规 | 重新执行先前命令 | 较慢(取决于命令) | 所有支持的 Shell |
| 即时 | 从命令日志读取 | 即时 | 仅 Bash, Zsh |
来源