6 个版本
新版本 0.1.12 | 2024年8月22日 |
---|---|
0.1.11 | 2024年8月20日 |
#225 在 数据库接口
1,230 每月下载量
160KB
4K SLoC
🐸 rainfrog
为 postgres 设计的数据库管理 TUI
[!WARNING] rainfrog 目前处于 alpha 阶段。
rainfrog 的目标是提供一个轻量级的终端替代品,用于 pgadmin/dbeaver。
特性
- 通过类似 Vim 的按键和鼠标控制进行高效导航
- 查询编辑器,带有关键字高亮和会话历史记录
- 快速复制数据,过滤表,在模式之间切换
- 查看表元数据和属性的快捷方式
- 跨平台(macOS,linux,windows,通过 termux 的 android)
为什么叫 "rainfrog"?
免责声明
此软件目前正在积极开发中;请期待破坏性更改,并自行承担风险。不建议在生产数据库上使用此工具。
安装
cargo
安装 rust 后(建议通过 rustup 进行安装)
cargo install rainfrog
aur
Arch Linux 用户可以使用 AUR 通过 AUR 辅助工具 安装
paru -S rainfrog
termux
如果您正在使用 termux,您需要通过其包管理器安装 rust
pkg install rust
并确保安装带有 termux 功能(并禁用默认功能)
cargo install rainfrog --features termux --no-default-features
二进制文件
- 从最新 发布版 下载适合您操作系统的相应二进制文件
- 将二进制文件移动到您的
PATH
环境变量中的文件夹
使用方法
[!NOTE]
connection_url
必须包含您访问数据库的凭据(例如,postgres://username:password@localhost:5432/postgres
)
rainfrog --url $(connection_url)
按键绑定
通用
按键绑定 | 描述 |
---|---|
Ctrl+c |
退出程序 |
Alt+1 ,Ctrl+n |
将焦点切换到菜单 |
Alt+2 ,Ctrl+b |
将焦点切换到查询编辑器 |
Alt+3 , Ctrl+h |
将焦点切换到查询历史 |
Alt+4 , Ctrl+g |
将焦点切换到结果 |
Tab |
向前循环焦点 |
Shift+Tab |
向后循环焦点 |
q |
中止当前查询 |
菜单(模式列表和表)
按键绑定 | 描述 |
---|---|
j , ↓ |
向下移动选择1行 |
k , ↑ |
向上移动选择1行 |
g |
跳转到当前列表顶部 |
G |
跳转到当前列表底部 |
h , ← |
聚焦于模式(如果超过1个) |
l , → |
聚焦于表 |
/ |
过滤表 |
Esc |
清除搜索 |
退格键 |
聚焦于表 |
搜索时按Enter |
聚焦于表 |
选择模式时按Enter |
聚焦于表 |
选择表时按Enter |
预览表(100行) |
R |
重新加载模式和表 |
查询编辑器
键绑定可能不会与vim完全相同。Rainfrog中所有活动的vim键绑定列表可以在vim.rs中找到。
按键绑定 | 描述 |
---|---|
Alt+Enter , F5 |
执行查询 |
j , ↓ |
向下移动光标1行 |
k , ↑ |
向上移动光标1行 |
h , ← |
向左移动光标1个字符 |
l , → |
向右移动光标1个字符 |
w |
移动光标到下一个单词开头 |
e |
移动光标到下一个单词结尾 |
b |
移动光标到上一个单词开头 |
0 |
移动光标到行首 |
$ |
移动光标到行尾 |
gg |
跳转到编辑器顶部 |
G |
跳转到当前列表底部 |
Esc |
返回到正常模式 |
i |
进入插入(编辑)模式 |
I |
在行首进入插入模式 |
A |
在行尾进入插入模式 |
o |
在新行下方插入 |
v |
进入视觉(选择)模式 |
V |
进入视觉模式并选择行 |
r |
开始替换操作 |
y |
开始复制(剪切)操作 |
x |
开始剪切操作 |
p |
从剪贴板粘贴 |
u |
撤销 |
Ctrl+r |
重做 |
Ctrl+e |
向下滚动 |
Ctrl+y |
向上滚动 |
查询历史
按键绑定 | 描述 |
---|---|
j , ↓ |
向下移动选择1行 |
k , ↑ |
向上移动选择1行 |
g |
跳转到列表顶部 |
G |
跳转到列表底部 |
y |
复制选定的查询 |
I |
在编辑器中编辑选定的查询 |
D |
删除所有历史 |
结果
按键绑定 | 描述 |
---|---|
j , ↓ |
向下滚动1行 |
k , ↑ |
向上滚动1行 |
h , ← |
向左滚动1个单元格 |
l , → |
向右滚动1个单元格 |
b |
向右滚动1个单元格 |
e , w |
向左滚动1列 |
g |
跳转到表格顶部 |
G |
跳转到表格底部 |
0 |
跳转到第一列 |
$ |
跳转到最后一列 |
v |
选择单个字段 |
V |
选择行 |
Enter |
向内更改选择模式 |
退格键 |
向外更改选择模式 |
y |
复制选择 |
Esc |
停止选择 |
路线图
v0.1.0 (alpha)
- 可滚动表格
- 可取消的异步查询(spawn tokio任务)
- 带表格和模式的菜单列表(可折叠)
- tui-textarea用于查询编辑器
- 基本的tui-textarea vim键绑定
- 处理自定义类型/枚举
- 显示受影响的行
- 删除/删除前确认
- 表格选择和拖拽
- 多行粘贴
- 编辑器操作系统剪贴板支持
- 处理鼠标事件
- 底部显示快捷键提示
- 分支保护
v0.2.0 (beta)
- vhs解释性gif
- 升级ratatui和tui-textarea
- 查看索引、键等快捷键
- 高性能语法高亮
- 会话历史
- 变更日志、发布脚本
- 处理解释/分析输出
- 显示查询持续时间
- 单元/端到端测试
- homebrew / cargo-dist / 二进制安装脚本
后备
- 处理流行的postgres扩展(postgis、pgvector等)
- 支持mysql、sqlite和其他sqlx适配器
- 非vim编辑器快捷键
- 编辑器自动完成
- 实时图形/度量(类似于pgadmin)
- 更多打包
- 自定义(快捷键、颜色)
- 更改光标插入模式样式(不确定是否可以用tui-textarea实现)
- 更好的vim多行选择模拟
- 处理更多鼠标事件
- cd中的vhs
- 加载动画
已知问题和限制
- 对于具有许多列的查询结果,渲染的
Table
小部件的高度可能受到限制,因为底层缓冲区的最大面积是u16::MAX
(65,535)。可以通过https://github.com/ratatui-org/ratatui/issues/1250修复 - 在mac上,对于VS Code和终端(可能还有其他编辑器),需要开启“使用option作为meta键”设置才能使Alt/Opt快捷键生效。在VS Code中,是
"terminal.integrated.macOptionIsMeta": true
;在kitty中,是配置中的macos_option_as_alt yes
。 - 在视觉模式下,当选择整行时,行为与vim不同,因为它只是从行的开头开始选择,所以上下移动行会打断选择。
- 鼠标事件仅用于更改焦点和滚动;编辑器当前不支持鼠标事件,无法使用鼠标选择菜单项
致谢
- ratatui(本项目以ratatui的组件模板作为起点)
- tui-textarea(用于查询编辑器)
- gobang(一个我从中学到启发的rust数据库tui)
- ricky rainfrog
依赖关系
~79MB
~1.5M SLoC