笔记
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
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上。