drift:终端 Git diff 分页器
用 Rust 编写的终端 git diff 分页器,带语法高亮、分栏视图和实时刷新。
- 浏览
- 1
- 访问
- 0
- 下载
- 0
- 版本
- v0.0.14
- 平台
- Windows、macOS、Linux
详细介绍
项目简介
drift 是一个用 Rust 编写的 git diff 分页器,把熟悉的 diff 放进真正的终端 UI 中。它可以直接对比工作区、暂存区或某个提交,也可以像普通分页器一样,从 stdin 读取管道传入的 diff。开箱即用,无需配置;主题、颜色和按键都可以之后再调整。

主要功能
- 语法高亮与词级(intraline)变更强调
- 分栏(split)与统一(unified)视图切换,长行可自动换行
- 文件侧边栏与文件统计弹窗,侧边栏分隔线可拖动并实时调整宽度
- 按 hunk 跳转、文件内正则搜索(smart-case)
- 在
$EDITOR中打开当前文件 - 实时模式
-w:仓库索引或分支发生变化时自动刷新 - 完整的鼠标操作:点击文件跳转、拖拽选择文本并复制到系统剪贴板(SSH 下经由 OSC 52)
- 内置多套主题:onedark、dracula、gruvbox、nord、solarized、catppuccin、tokyonight、monokai 等
- 支持 Git 组合 diff(merge commit),刷新后保留父文件路径与光标位置
安装与使用
几种常见安装方式,装好后都会得到 drift 可执行文件:
brew install aymanbagabas/tap/drift # macOS / Linux
scoop bucket add aymanbagabas https://github.com/aymanbagabas/scoop-bucket && scoop install drift # Windows
cargo install drift-diff
npm install -g @aymanbagabas/drift
Debian / Ubuntu、Fedora / RHEL、Arch(AUR)、Nix(NUR)也有对应的软件源安装方式,或直接从 GitHub Release 下载预编译二进制放到 PATH。
常用命令:
drift # 工作区 vs HEAD
drift -A # 同时显示未跟踪文件
drift --staged # 查看暂存区
drift HEAD~3 # 查看单个提交
drift main..feature # 查看一段提交范围
drift -- README.md src/ # 限定到某个文件或目录
drift -w # 监听仓库变化并刷新
git diff | drift # 分页器模式,从 stdin 读取
设为 git diff / git show 的默认分页器:
git config --global pager.diff drift
git config --global pager.show drift
主题可通过 git config --global drift.theme onedark 设置。配置文件按 $XDG_CONFIG_HOME/drift/config.{toml,yaml,yml,json}、~/.config/drift/config.{toml,yaml,yml,json}、~/.drift.toml 的顺序查找,TOML、YAML、JSON 都支持。
常用按键:j k 移动光标,{ } 上/下一个 hunk,[ ] 上/下一个文件,/ 搜索,s 切换分栏,w 切换换行,B 侧边栏,F 实时跟随,c 复制,o 用 $EDITOR 打开,r 刷新,? 帮助,q 退出。
注意事项
- 默认主题是
ansi,直接借用终端自身的 16 色,语法高亮与词级强调默认关闭;换成其他内置主题才会开启高亮。 --之后的路径使用 Git pathspec 而非正则,glob 需要加引号交给 Git 处理,例如drift -- '*.rs'。- 在 zsh、fish 和 PowerShell 中补全 reflog 条目时,需给
{加引号,例如'HEAD@{'。 - 作为
git show分页器时,drift 会在 diff 上方显示提交哈希、作者、日期和消息;非 diff 输出(如git show --stat)会原样打印到终端。 - 配置中的颜色分
[colors]调色板与[styles]组件样式两层,完整写法可参考仓库的themes/目录。
本作品整理自 GitHub 开源项目 aymanbagabas/drift,原作者 @aymanbagabas,许可证 MIT。中文介绍由 AI 根据项目 README 整理,以原仓库为准。
更新记录
- v0.0.14当前版本
修复组合 diff 的显示:分页与独立模式下为每个父提交标注变更标记和行号,采用整宽视图而非分栏;无 patch 时也显示提交元数据;刷新后保留父文件路径与光标位置,父列数量变化时清除过期选择。
评论