6 个版本

新版本 0.1.12 2024年8月22日
0.1.11 2024年8月20日

#225数据库接口

Download history 145/week @ 2024-08-01 528/week @ 2024-08-08 557/week @ 2024-08-15

1,230 每月下载量

MIT 许可证

160KB
4K SLoC

🐸 rainfrog

为 postgres 设计的数据库管理 TUI

rainfrog demo

[!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

二进制文件

  1. 从最新 发布版 下载适合您操作系统的相应二进制文件
  2. 将二进制文件移动到您的 PATH 环境变量中的文件夹

使用方法

[!NOTE] connection_url 必须包含您访问数据库的凭据(例如,postgres://username:password@localhost:5432/postgres

rainfrog --url $(connection_url)

按键绑定

通用

按键绑定 描述
Ctrl+c 退出程序
Alt+1Ctrl+n 将焦点切换到菜单
Alt+2Ctrl+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不同,因为它只是从行的开头开始选择,所以上下移动行会打断选择。
  • 鼠标事件仅用于更改焦点和滚动;编辑器当前不支持鼠标事件,无法使用鼠标选择菜单项

致谢

依赖关系

~79MB
~1.5M SLoC