内容
<div align="center">
<img alt="decoreba" src="cmd/decoreba/desktop/appicon-transparent.png" width="240">
# 命令记录工具
一个用于存储和搜索终端命令的手动命令仓库。
[](https://www.npmjs.com/package/decoreba)
[](https://github.com/matheuzgomes/decoreba/actions)
[](LICENSE)
</div>
在工作中,我经常需要带有特定参数的命令,但又忘记将它们保存到哪里。当我开始使用 tmux 时,我经常在 Google 上搜索命令。
Decoreba 将这些命令存储在一个可搜索的仓库中。当您认为某个命令值得记住时,您可以添加它,然后在需要时从终端找到它。
我认为它就像一个永久的 Windows + V 命令记录工具。您可以决定保存哪些命令,以便仓库保持有用,而不是收集您曾经输入的每个命令。Shell 历史记录和 [fzf](https://github.com/junegunn/fzf) 仍然适用于您未保存的命令。Decoreba 增加了一个新的搜索位置,并附带保存的上下文、注释和工作流程。
<div align="center">
<img alt="decoreba search demo" src="assets/gifs/decoreba-search.gif" width="800">
</div>
## 快速开始
使用 npm 安装:
```bash
npm install -g decoreba
decoreba version
```
此 npm 包为 Linux、macOS 和 Windows 提供了二进制文件。您也可以使用 Homebrew 安装 decoreba 或从源代码构建:
```bash
# Homebrew
brew tap matheuzgomes/decoreba
brew install decoreba
# Go 1.25+
go install github.com/matheuzgomes/decoreba/cmd/decoreba@latest
```
保存您要记住的命令:
```bash
decoreba add
```
表单会要求您提供上下文、标题、命令、标签和注释。例如:
```text
上下文:tmux
标题:重命名当前窗口
命令:tmux rename-window {{name}}
```
稍后搜索:
```bash
decoreba tmux rename
```
选择结果并按 `Enter` 复制。按 `Ctrl+X` 在确认后执行。
## 工作原理
Decoreba 遵循一个小的、刻意的循环:
1. 您选择一个值得保存的命令。
2. Decoreba 将命令及其上下文存储在一个 JSON 文件中。
3. 您按上下文、标题、命令或标签搜索。
4. 内联调色板复制选定的命令或在确认后运行它。
调色板在您的提示符下方打开,并在您完成后消失。它不会用全屏界面替换您的终端,也不需要后台服务。
命令可以包含每次更改的值的占位符:
```text
docker logs --tail {{lines:100}} {{container}}
```
Decoreba 在您复制或执行命令时询问这些值。
保存的命令也可以包含多个标题步骤。按 `Enter` 一次运行一步,或在确认后按 `Ctrl+X` 运行剩余的步骤。失败的步骤在工作流中保持可见。
## 从您的 shell 使用
为 Bash 或 Zsh 生成补全:
```bash
source <(decoreba completion bash)
source <(decoreba completion zsh)
```
对于 Fish:
```fish
decoreba completion fish > ~/.config/fish/completions/decoreba.fish
```
一起安装 Bash 或 Zsh 小部件和补全:
```bash
decoreba init
decoreba init --yes
```
加载 shell 集成后,在输入命令时按 `Ctrl+O`。Decoreba 使用命令行上已有的文本作为搜索查询。`Enter` 将选定的命令放回提示符。Fish 支持补全,但不支持此小部件。
您可以直接加载小部件以检查生成的脚本:
```bash
source <(decoreba shell bash)
source <(decoreba shell zsh)
```
## 其他命令
```bash
decoreba # 搜索所有上下文
decoreba git undo # 在 git 中搜索
decoreba list # 列出上下文和命令计数
decoreba list docker # 列出 docker 中的命令
decoreba edit <id> # 按 id 或 id 前缀编辑
decoreba rm <id> # 按 id 或 id 前缀删除
decoreba stats # 显示仓库统计信息
decoreba export # 将命令导出到 stdout
decoreba import [file] # 从 stdin 或文件导入
decoreba help # 显示完整的命令列表
```
## 为什么使用 decoreba?
当您记得某个命令存在,但不记得确切的标志、语法或参数时使用它。保存的上下文和注释帮助您识别正确的命令。工作流程允许您将相关的命令放在一起,以便一个操作需要多个步骤。
当您想要搜索已经输入的所有内容时,请使用 shell 历史记录或 `fzf`。当您想要有意保持较小的命令集合时,请使用 decoreba。
## 一个刻意的限制
Decoreba 不会自动保存命令。您手动添加条目,因为有用的集合是您选择的集合,并且自动捕获会引发隐私和安全问题。这也意味着您从未保存的命令不会出现在仓库中。
## 可选同步
仓库是一个 JSON 文件。您可以自己在机器之间移动它,或通过私有的 GitHub Gist 同步:
```bash
decoreba sync init
decoreba sync push
decoreba sync pull
decoreba sync status
```
同步需要 `DECOREBA_GIST_TOKEN`,一个具有 `gist` 作用域的经典 GitHub 令牌。使用 `--encrypt` 用 AES-256-GCM 加密上传的仓库。
同步是一种可选的传输方式。它对于本地工作流程不是必需的。
## 可选 MCP 服务器
MCP 服务器通过 stdin 和 stdout 将仓库暴露给 AI 代理。您可以通过它搜索、读取、添加、编辑、删除和执行命令。
```bash
decoreba mcp
```
写入和删除操作需要 `confirm: true`。默认情况下,危险的命令模式被阻止,修改首先被备份。如果您不使用 MCP,可以忽略本节。
## 数据和配置
命令存储在一个 `commands.json` 文件中:
| 系统 | 路径 |
|---|---|
| Linux | `$XDG_CONFIG_HOME/decoreba/commands.json` |
| macOS | `~/Library/Application Support/decoreba/commands.json` |
| Windows | `%AppData%\decoreba\commands.json` |
设置 `DECOREBA_CONFIG` 以覆盖配置目录。`NO_COLOR` 和 `--no-color` 禁用 ANSI 颜色。
## 开发
源代码工作流程需要 Go 1.25 或更高版本和 `make`:
```bash
git clone https://github.com/matheuzgomes/decoreba
cd decoreba
go test ./...
make build
```
## 帮助和链接
- [问题](https://github.com/matheuzgomes/decoreba/issues)
- [发布](https://github.com/matheuzgomes/decoreba/releases)
- [MIT 许可证](LICENSE)