跳到正文
发现
drift:终端 Git diff 分页器
命令行工具开发者工具

drift:终端 Git diff 分页器

用 Rust 编写的终端 git diff 分页器,带语法高亮、分栏视图和实时刷新。

admin
发布于 2026-11-02
浏览
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 整理,以原仓库为准。

更新记录

  1. v0.0.14当前版本

    修复组合 diff 的显示:分页与独立模式下为每个父提交标注变更标记和行号,采用整宽视图而非分栏;无 patch 时也显示提交元数据;刷新后保留父文件路径与光标位置,父列数量变化时清除过期选择。

评论