墨穗app.notebase.cn
控制台
内容库
动态
管理
账户
U
用户
--
在线
v1.0.165 · 墨穗笔记
笔记

Notebase墨穗
静水流深,落墨成穗。

0笔记
0工具
30推荐

分类导航

按主题直达

编辑精选

站内用户贡献 · 真实笔记

最新收录

每日更新
继续浏览全部内容 →

笔记

0
加载中...

工具

0

此页用于记录用户反馈问题后的每一次改进

关于

笔记用法

“写笔记”支持四种格式——Word 文档、Excel 表格、Markdown、纯文本,起稿或二次编辑时都能随时切换,同一篇笔记想用哪种形态来记,都由你说了算。

md、txt、csv、json 这类纯文本则原样载入,不做多余加工。拿一张现成的表倒进来、改几笔、再导出去,等于白用一台免费的格式转换器。

要带走就在右上角点“下载”,可导出 PDF、Word、Markdown、Excel、TXT 等格式;列表卡片“⋯”菜单里,也有同样的下载入口。

工具用法

在“工具”页点“+ 上传工具”即可发布:填好名称与链接,再用 Markdown 把使用方法写清楚——能解决什么问题、怎么装、怎么用,比堆介绍实在。

要分发安装包就一并上传压缩包(ZIP、RAR、7Z、TAR.GZ,最大 35MB),别人在详情页一键下载;只放链接不带附件也可以。

工具按大家的收藏热度排序,好用的自然会被顶上来。发布后可在详情页或卡片菜单里编辑、下架。

隐藏笔记

写笔记时勾上“隐藏”,这篇就只存在于你自己的账号里:不进列表、不进搜索、不上首页精选,也不会出现在任何公开的页面,链接发给别人同样打不开。

适合放密码、草稿、日记这类只给自己看的内容;想公开,去“发布”打开它,把“隐藏”的勾去掉再保存,之后编辑会默认保持原状态,不会悄悄变回公开。

不想公开、只想临时给人看:点“分享”生成一条带密码和有效期的链接,到期自动失效,你也能随时撤销。

数据安全

你的内容会同时保存在多个副本上,系统定期做备份与完整性校验,再配合异地容灾机制:就算某台机器出问题,数据也不会丢,可以长期放心存放;特别重要的资料,仍建议你另外再留一份备份。

技术

全站跑在容器化、模块化的现代架构上,更新、部署、回滚都很快,扩展性和稳定性都按长期运营的标准来设计(Built for reliability, designed to scale)。

理念

这个网站最早只是一个人的笔记仓库,后来慢慢长成现在的知识中枢。设计上很克制——没有广告、没有追踪、没有推荐算法,只是干干净净地存放一些东西;既然做好了,就公开出来,万一有人用得上呢。

原则

不做大而全,不做平台梦,保持简单、保持克制、保持好奇。所有内容都由用户贡献、由用户维护:不会突然冒出付费墙,不会在角落塞广告位,也不会把你的数据卖给第三方。

更多

产品会持续迭代,站内日志页记录着每一次改动,改了什么都有迹可循;想了解这个站是怎么一步步走到今天的,翻翻日志就能看到来龙去脉。

举报

如果在这里看到涉嫌违规的内容,点对应卡片右侧的“举报”按钮就能提交,我们会尽快核实处理;也谢谢你花一点时间,一起把这里维护干净。

趋势

// 点击导航加载发现
归档
// 归档为空
最近浏览
// 暂无浏览记录
发布
// 加载中...
用户发布
// 加载中...
用户管理
// 加载中...
访问统计
// 加载中...
内容审核
// 加载中...
个人信息
// 加载中...
返回首页

difftastic

terminal

difftastic — 一个基于语法树的diff工具,解决传统diff看不懂代码结构变动的问题。

如果你写过代码、改过代码、review过代码,那大概率对 git diff 的输出又爱又恨。它能告诉你哪一行变了,但经常是一堆红色绿色糊在一起,尤其是重构、格式化、或者改了个括号缩进之后,diff输出完全没法看——满屏的“删了整段,又加回整段”,你以为改了逻辑,结果只是格式变了。

difftastic 就是来干这个的。它不是一个“更好看的diff”,而是一个懂语法的diff工具。它会把两边代码解析成抽象语法树(AST),然后在树结构上做对比。所以它能告诉你:函数签名没变,只是里面加了一行;或者这个if条件改了,但else分支完全没动。而不是像传统diff那样,把整个函数体标红又标绿。

它支持的语言非常多——Rust、Python、JavaScript、TypeScript、Go、Ruby、Java、C、C++、C#、Kotlin、Swift、Elixir、Clojure、Haskell、Shell、JSON、TOML、YAML……基本覆盖了主流语言和配置文件格式。而且它还能对比图片(是的,图片),甚至对比CSV表格。不过最核心的场景还是代码。


下载方式

直接去官网:https://difftastic.wilfred.me.uk/
或者去GitHub看Release:https://github.com/Wilfred/difftastic/releases


安装方法

macOS(Homebrew)

brew install difftastic

Linux(apt / dnf / pacman)
Ubuntu/Debian 用户可以直接用 cargo 安装(见下面),或者从GitHub下载预编译的二进制。
Arch Linux 用户:

sudo pacman -S difftastic

Windows(Scoop / Chocolatey / 手动)

scoop install difftastic
# 或者
choco install difftastic

通用方法(Rust工具链)
如果你有 cargo(Rust的包管理器),一条命令搞定:

cargo install difftastic

安装完验证一下:

difft --version

基础使用教程

1. 直接对比两个文件

difft file1.py file2.py

输出是终端彩色高亮,左边是旧文件,右边是新文件。但和传统diff不一样的是——它会把代码块按语法结构对齐。比如你改了一个函数里的某一行,它不会把整个函数都标红,而是只高亮那行变化,其他行保持绿色(表示没变)。

2. 对比两个目录

difft dir1/ dir2/

它会递归对比目录下所有文件,只输出有差异的文件。这个在对比两版项目代码时非常有用。

3. 作为Git的diff工具

这是最常用的姿势。先配置Git:

git config --global diff.external difft

或者更推荐的方式(不覆盖git diff,而是作为一个独立命令):

git config --global alias.dft 'difft'

然后你就可以用 git dft 来对比暂存区和工作区的差异了。
如果想对比两个commit:

difft HEAD~1 HEAD

4. 对比字符串或管道输入

echo "foo" | difft - <(echo "bar")

或者对比两个命令的输出:

difft <(cat old.json) <(cat new.json)

5. 对比图片

difft old.png new.png

它会输出图片的像素差异信息(基于像素级对比),不是视觉化图片,但能告诉你哪些区域变了。


进阶技巧

1. 自定义颜色主题

difftastic支持 --color 参数,但更推荐写配置文件。
在 ~/.config/difftastic/config.toml 里(或者 ~/.difftastic.toml)配置:

[display]
# 背景模式:dark, light, ansi
background = "dark"

# 颜色方案
color-scheme = "Nord"

# 是否显示行号
line-numbers = true

# 上下文行数(默认2)
context = 3

# 是否显示文件的完整路径
show-path = true

2. 忽略空白差异

有些项目有格式化规范,但你可能只想看逻辑变化:

difft --ignore-whitespace old.py new.py

3. 只显示修改行,不显示上下文

difft --context 0 file1 file2

这在对比大文件时能减少输出量。

4. 和git diff一起用(不覆盖git diff)

如果你不想把difftastic设为默认diff工具,可以写个脚本或者alias:

# 在 .bashrc 或 .zshrc 里
alias gdft='git diff --no-ext-difft && difft'

或者用Git的 difftool 机制:

git config --global diff.tool difftastic
git config --global difftool.difftastic.cmd 'difft "$LOCAL" "$REMOTE"'

然后 git difftool 就会调用difftastic。

5. 对比JSON时保留结构

difftastic对JSON支持很好,会按键值对结构对比,而不是按行。比如两个JSON文件只有某个字段值变了,它不会把整个对象标红,而是精确到那个字段。

6. 输出HTML报告

虽然difftastic本身不支持导出HTML,但你可以结合 aha(终端转HTML工具)实现:

difft file1 file2 | aha > diff.html

然后就能在浏览器里看彩色diff了。


什么时候用difftastic,什么时候不用?

适合用:

  • 代码重构(比如函数重命名、提取公共逻辑)
  • 格式化代码后对比(比如Prettier、Black、rustfmt跑过之后)
  • 对比两个版本的项目目录
  • 对比JSON/TOML/YAML配置文件

不太适合:

  • 超大文件(几十万行,解析AST会慢)
  • 纯文本日志或自然语言(比如小说、Markdown文章,语法树意义不大)
  • 二进制文件(除了图片,其他不支持)

最后说两句

difftastic 不是万能药,但它确实解决了一个很痛的场景:当代码结构变化时,传统diff的输出简直是灾难。我自从用上它,code review的效率至少提升了30%——因为我能一眼看出“哦,这个人只是把函数换了个位置,逻辑没改”,而不是一行一行去对比红色和绿色。

如果你还没试过,建议先在几个小项目上体验一下。配置好git alias后,它就变成了一个“用了就回不去”的工具。毕竟,程序员的时间不应该浪费在解读diff上。

相似推荐
MetasploitPastaHashcatWezTermDenotig
编写使用方法
Markdown 格式 · Ctrl+Enter 确定
0 字新建笔记
欢迎回来
登录你的墨穗笔记账户
忘记密码?
还没有账户?立即注册
创建账户
注册你的专属墨穗笔记
已有账户?去登录
找回密码
输入注册邮箱获取验证码
返回登录
请输入图片中的验证码以继续注册
加载中...
取消
新建收藏
手动添加你喜欢的内容
取消
编辑头像与昵称
上传新头像或修改你的显示昵称
支持 JPG/PNG,最大 2MB
取消

问题反馈

隐私提醒

取消
编辑工具
受控分享
为这篇笔记生成限时 / 带密码的临时链接
关闭