对时间的慷慨,就等于慢性自杀。——奥斯特洛夫斯基
try:给每一次“灵感小实验”一个干净的家
你是不是也有这种开发习惯:随手起个目录叫 test、test2、actually-working-test,过几天又在 /tmp 里开一堆、桌面上再来几份,等到需要复用某个思路时,却在全盘搜索里找不到那段天才灵感的代码?“你的实验值得有个家。”这就是 tobi/try 的精神内核——一个“单文件 Ruby 脚本”,把你所有的小项目集中到一个可搜索、可跳转、可自动命名的目录里,让混乱有序、让迭代高效。
- 官网:pages.tobi.lutke.com/try
- RubyGems:try-cli
- 仓库:tobi/try
- 描述:fresh directories for every vibe
一句话总结:try 是“给灵感起个家”的命令行工具。它不复杂、不折腾——一个 Ruby 文件,零依赖,集成到你的 shell 后,就能把分散在不同路径的实验目录,统一纳入一个专用路径,支持模糊搜索、时间权重排序、日期前缀命名、Git worktree 一键建场等。
它解决的问题:把“混乱的实验目录”变成“有序的灵感仓”
官方 README 里的问题陈述太真实了:你在学 Redis,于是有 /tmp/redis-test、~/Desktop/redis-actually、~/projects/testing-redis-again……三周后你想找“连接池的妙招”,发现再也找不到那段代码。
try 的解决方式很优雅:所有实验集中到一个路径(默认 ~/src/tries,可配置),并且——
- 支持模糊搜索,
rds就能匹配到redis-server,connpool就能匹配到connection-pool - 排序“懂你”:最近访问过的在前、名字更短者同分情况下更靠前
- 自动加日期前缀,像
2025-08-17-redis-experiment,一眼知道创建时间和主题 - 一切零配置,一个 Ruby 脚本就够了
功能一览:简洁但很“懂开发者”
-
智能模糊搜索
不只是子串匹配,还考虑简写、权重、名称长度等因素,让你打几下就到位。 -
时间感知
展示“上次访问时间”和“间隔”,最近动过的自然靠前,适合“我昨天在忙啥”的回忆路径。 -
自动日期前缀
新建目录时,无需再想命名规范,直接有形如YYYY-MM-DD-<name>的格式;如果你已经键入了名字,也可跳过日期提示。 -
漂亮的 TUI
清爽简洁、匹配高亮、显示分数���排序依据、默认暗色主题。 -
Shell 集成
在 bash/zsh 或 fish 里一条eval即可接入,命令是跨 shell 的(绝对路径、已引用),只需为不同 shell 包一层小 wrapper。 -
Git worktree 支持
try . [name]或try worktree dir [name]可以为当前(或指定)仓库创建日期前缀的 worktree,自动切断 HEAD,适合独立尝试一个功能。
安装与初始化
RubyGems(推荐)
1 | |
然后把它加到你的 shell:
1 | |
快速手动(下载单文件)
1 | |
基本用法:一看就会,一用就爽
1 | |
工作树(try . / try worktree dir)的小贴士:
- [name] 存在就用它,否则用当前目录名,都会加上今天的日期前缀
- 在 Git 仓库内:新目录里会自动添加一个 detached HEAD 的 worktree
- 不在仓库内:就创建目录并 cd 过去,适合无仓库的随手实验
Git 克隆的“贴心自动化”
try 能自动把 Git 仓库克隆到“合适命名”的实验目录:
1 | |
支持多种仓库地址格式:
https://github.com/user/repo.gitgit@github.com:user/repo.githttps://gitlab.com/user/repo.gitgit@host.com:user/repo.git
注意:生成目录名时会自动去掉 .git 后缀。
快捷键与交互操作
↑/↓或Ctrl-P/N/J/K:导航Enter:选择或创建Backspace:删除一个字符Ctrl-D:删除目录(有确认)ESC:取消- 直接输入即可过滤
配置与路径
把实验目录集中到你想要的位置:
1 | |
默认路径是 ~/src/tries。你也可以通过 try init <path> 来指定。
Nix 与 Homebrew 支持
Nix 快速上手
1 | |
Home Manager 配置示例:
1 | |
Homebrew 快速安装
1 | |
安装后同样执行 shell 集成:
-
Bash/Zsh:
1
2eval "$(try init)" # 默认 ~/src/tries
eval "$(try init ~/src/tries)" # 指定路径 -
Fish:
1
2eval "(try init | string collect)"
eval "(try init ~/src/tries | string collect)"
为什么用 Ruby?
- 单文件、零依赖
- 有 Ruby 的系统即可运行(macOS 自带)
- 面对成千上万目录也够快
- 易于 hack 与阅读
这不是一个“重型工程”,它生来就要“轻灵”,让你一分钟上手,十秒钟起一个干净的实验场。
设计哲学:拥抱真实的开发者大脑
“你的大脑不是整齐的文件夹。你有想法,你去尝试,你像喝了咖啡的松鼠一样来回切换上下文。”——try 的哲学。它鼓励你快速开始,把每个灵感都放进一个可检索、可回访、可命名的家;而不是在杂乱无章里消磨创造力。
- 每个实验都能有一个“家”
- 每个“家”都能立刻找到
- 你的凌晨两点不再丢进虚空
FAQ(节选)
-
为什么不用
cd和ls?
因为你可能有 200 个目录,记不住到底叫test-redis、redis-test还是new-redis-thing。 -
为什么不用
fzf?
fzf 超棒,但它专注于文件。try 则专注于“项目目录”,内置时间权重与自动创建逻辑。 -
可以用来管理“正式项目”吗?
可以,但 try 更适合“实验”。正式项目仍应该在更规范的位置(命名与结构)进行维护。 -
我有几千个实验怎么办?
欢迎加入俱乐部。try 的评分与排序算法会保证相关内容在前,让“巨量实验”也不至于失控。
总结与建议
如果你的生活里充满“尝试”:学一个新库、验证一个 API、试一种架构、练一个算法……try 会成为你的“灵感收纳器”。它不追求复杂的功能堆叠,只是把“实验目录”这件小事做到极致:集中存放、智能搜索、时间加权、自动命名、worktree 建场、Git 克隆、零依赖集成。
用法建议:
- 先在
~/src/tries集中你的实验(或自定义TRY_PATH) - 习惯用
try <关键词>打开 / 创建;给实验加“主题词”,方便复找 - 在仓库里用
try . [name]为一次尝试建一个独立 worktree;把思路干净地“封存”起来 - 克隆第三方项目或模板时,直接用
try <repo-url>,让它进你的实验档案集
你的实验值得一个家。今天就把它们搬进去吧。