说到把代码变成图片,Carbon.now.sh 至今仍是那个参照物,而且先说清楚:它哪儿也没去。这个项目在 GitHub 上有超过 36,000 颗星,依然开源,依然免费。如果它已经满足你的需要,这篇你不用看。

但「满足你的需要」这句话里塞了很多东西。人们去找替代品的理由通常很具体:不想再离开编辑器、想让代码留在自己机器上、想把整件事脚本化、想要动画,或者想让导出的尺寸正好是平台期待的那个。下面每一个工具都在其中某一点上强过 Carbon,在别的点上则不如它。

往下读之前先声明:Codeshot 是我们做的。它排第五,不是第一,而且它那一节列了不该选它的理由。

速览

工具 运行环境 费用 适合
ray.so 浏览器 免费 最快拿到一张像样的图
Chalk.ist 浏览器 免费、开源 最接近 Carbon,还有 diff 模式
CodeImage 浏览器 免费、开源 维护一个代码片段库
CodeSnap VS Code 免费 完全不离开编辑器
Codeshot Mac 与 iPhone 应用 一次性 5.99 美元 离线工作和精确的导出尺寸
Snappify 浏览器 有免费档,5 美元/月起 动画和演示
freeze 终端 免费、开源 脚本化和终端输出

1. ray.so

由 Raycast 团队做的 ray.so,是你想在十五秒左右拿到一张图时会打开的那个。粘贴、从一小组渐变背景里挑一个、导出 PNG 或 SVG。刻意不给太多选项正是它的用意——没什么可折腾的,你也就不折腾了。

代价: 同样这一小组选项也是天花板。如果你需要某个特定背景、某个精确比例,或者一款你买了授权的字体,很快就会碰到 ray.so 的尽头。

2. Chalk.ist

Chalk.ist 是这份名单里最接近 Carbon 直接替代品的:免费、开源、浏览器里跑、整体形态也差不多。它领先的地方在附加功能——显示改动行的 diff 模式、一个 Twitter 风格的徽标,还有不少人做长贴配图时喜欢的倒影效果。

代价: 它是网页工具,所以 Carbon 那套顾虑同样适用。你的代码会进入一个网页,也谈不上离线使用。

3. CodeImage

CodeImage 开源、在浏览器里运行、有 20 多款主题,但它真正的特点是把代码片段当成值得留存的东西。你可以保存并整理一个片段库,而不是每次都从空白编辑器开始。

代价: 这个库正是使用它的理由。如果你只做一次性的图片,这套结构就是你享受不到好处的额外负担。

4. CodeSnap

CodeSnap 是安装量超过 380 万的 VS Code 扩展,用一次就明白它的优势:代码本来就在你的编辑器里,何必再复制到网站上。选中、运行命令、拿到 PNG,或者直接复制到剪贴板。行号、背景、阴影、圆角和窗口按钮它都支持。

代价: 它只在 VS Code 里帮得上忙。终端里的代码、PR 评审里的代码、Slack 消息里的代码、Xcode 里的代码,都得先挪到别处去。

5. Codeshot

Codeshot 是我们做的 Mac 与 iPhone 原生应用,诚实地说,它的理由很窄:它绝不把你的代码发到任何地方,而且能让你精确控制最后出来的东西。所有处理都在本地。你会得到覆盖 60 种语言的 30 款语法主题(每款都有浅色和深色变体)、来自 19 张 macOS 壁纸或 92 种渐变的背景,以及完全不要背景直接导出的选项。它真正值回票价的地方是尺寸:让图片跟着内容走,或者锁定成 1:1、4:3、3:2、16:9、9:16、2:3、3:4,然后按 1×、2× 或 3× 导出,这样在 Retina 屏上就不会发虚。

代价: 只支持苹果设备,售价 5.99 美元。这份名单上其他工具在 Linux 和 Windows 上也能跑。如果你不用 Mac,或者一个月才做一张图,免费的网页工具是更好的选择,我们也宁愿你去用那个。

6. Snappify

Snappify 是这里功能最全的,也是唯一一个有真正订阅制的。它超出了静态图片的范畴,能做动态代码、幻灯片和完整的演示,这让它真的是另一类东西,而不只是主题更多的 Carbon。付费方案按年付从每月 5 美元起,Professional 每月 9 美元,Team 每月 32 美元。

代价: 免费档更像试用而不是方案——只能存三份,演示和视频导出都带水印。请把付费档当成它真正的产品。

7. freeze

Charm 出品的 freeze 是那个没人提、但你们中有一半应该在用的工具。它是一个 MIT 许可的命令行工具,能把代码文件或者终端输出渲染成 PNG、SVG 或 WebP。freeze main.go -o main.png 就是全部流程,这意味着它可以直接放进 Makefile 或文档构建里,产出的图片不需要谁记着去手动重新生成。

代价: 没有可视化编辑器。你得调参数、再跑一遍,直到看着顺眼为止——这要么正是你想要的,要么正是你想躲开的。

到底该怎么选

大部分情况归结为两个问题。

你想给它拍张照的时候,代码在哪里? 如果答案是 VS Code,用 CodeSnap。如果是终端,用 freeze。如果到处都是,那网页工具或桌面应用更说得通。

这段代码必须留在你的机器上吗? 客户的活儿、尚未发布的功能、任何签了保密协议的东西——这就排除了这里所有的网页工具,Carbon 也在内,剩下的是编辑器扩展、命令行工具或原生应用。

如果这两个问题都没有明确答案,那 Carbon 依然很好。它免费、有人维护,而且正是它让这一整个门类得以存在。

如果你想看我们为什么做原生应用而不是又一个网页工具的完整论述,那在Carbon.now.sh 替代品里。