如果你搜的是 iPhone 上的代码截图应用,那你多半期待看到一篇盘点。十个应用、一张对比表、一个第一名。

没有这样的东西可写。你去找,找到的是能在 Safari 里打开的网页工具,以及会给语法上色但做不出可分享图片的代码编辑器。这个在桌面上多到泛滥的门类,作为 iPhone 原生软件几乎不存在。

对一件这么多开发者都在做的事来说,这是个奇怪的空缺,而在你将就着用第一个加载出来的浏览器标签页之前,值得先弄明白它。

往下读之前先声明:我们做的 Codeshot 正是少数原生选项之一,而且不免费。最后一节写了谁不该买它。这是它在 iPhone 上运行的样子,好让你知道这里在替什么说话:

iPhone 上运行的 Codeshot:渐变背景上渲染好的代码,下方是主题和背景的控件

你实际会找到什么

网页工具。 Carbon.now.sh、ray.so,以及一长串类似的站点。它们才是这块地方真正的主人。在手机上它们「能用」,指的是页面能加载出来。

代码编辑器。 TextasticKoder 是相当不错的原生 iOS 应用,会给代码上色。但两者都不打算产出一张适合发帖的排版图片——编辑器本来就不是干这个的。

中间几乎什么都没有。 这个空缺就是这篇文章的全部主题。

平心而论,App Store 很大,也完全可能存在我们和搜索都没捞出来的东西。但需要你去翻找这件事本身,就已经是结论了。在桌面上,这个门类拥挤到近乎滑稽。

这个空缺为什么存在

不是因为没人想要,而是因为做这东西的成本。

一个代码截图工具是三块必须彼此对得上的部件。一个语法高亮器,覆盖足够多的语言才算有用——那意味着要随应用分发并长期维护一整套语法定义,而不是写一条正则。一个渲染器,用正确的字体、间距和窗口装饰排版文字,并且每次都产出一模一样的像素。一条导出链路,能干净地缩放,并把图片交到它要去的地方。

在网页上,这三样几乎不要钱。浏览器本来就有排版引擎,highlight.js 是一个 script 标签,导出就是一个 canvas。这就是 Carbon 之所以存在的原因,也是后来那十几个工具同样是网页的原因——再做一个的边际成本非常低。

原生正相反。高亮器、文字排版、渲染,全都得你自己带。而且不像网页工具,你没法靠往分支上推一次代码就发布修复。

所以激励一直指向浏览器。那些确实走了原生的应用,去的是原生划算的地方:编辑器,因为那里本来就需要真正的文字处理。

网页工具遇上手机时会坏在哪

没什么戏剧性的。是摩擦,三处,每一次都有。

把代码弄进去。 编辑器是个网页文本框。选择手柄、光标和自动更正的行为,和 iOS 上其他网页输入框一样,也就是说不像代码编辑器。

调任何东西。 Carbon 的前提是什么都能调:主题、字体、内边距、背景、倍率。在桌面上那是一排你一眼扫过的菜单。在手机上,那是需要你去找的小目标,而每打开一个都会盖住正在调的预览。ray.so 更扛得住这一点,恰恰因为它给得少。

把图片弄出来。 导出是一次浏览器下载。在 iOS 上这意味着文件落到某处,然后你去找它,而不是直接进入你本来要发帖的那个应用。

一个月一次,这些都不算事。每周一次,那就是每次都和同样的三件事较劲。

原生到底带来什么

三件事,而且都关乎两端,而不是中间。

剪贴板只要一下。 有了通用剪贴板,你在 Mac 上复制的代码已经在手机里了。原生应用可以直接取用。

导出进的是分享面板。 不是下载——直接进信息、Slack、草稿、文件或照片图库。

你的设置会留着。 主题、背景和比例还是你上次选的那套,这也是第十张图只要几秒而不是几分钟的主要原因。

还有第四点,对一些人很重要,对另一些人毫无所谓:你的代码永远不会进入网页。如果你粘的是客户的活儿或尚未发布的功能,这个区别对你也许无所谓,对你上面的某个人可能有所谓。

那到底该用什么

偶尔用 — Safari 里的 ray.so。免费,选项少到小屏幕不会变成负担,出来的结果也够用。一个你一个月用两次的免费工具,没有替换的必要。

主要在桌前 — 在 Mac 上用 Carbon.now.sh,别再在手机上折腾。它免费、开源,而且在它被设计使用的地方非常出色。

经常,而且是在手机上 — 原生就是为这种情况存在的。Codeshot 是 Mac 与 iPhone 的原生应用:一键从剪贴板粘贴、30 款语法主题、根据代码本身识别的 60 种语言、从 1:1 到 9:16 的比例预设,以及导出到分享面板。

永远别用 — 系统自带的截图。它记录的是你手机的宽度而不是代码的宽度,而且在你按下之前行就已经折好了。

谁不该买我们的

它 5.99 美元,而且只支持苹果设备。这篇里所有的网页工具都免费,而且到哪儿都能跑。

如果你一个月做一张代码图片,正确答案是 ray.so,我们也宁愿你去用它。如果你既不用 iPhone 也不用 Mac,这个选择根本轮不到你做。如果你的图片总是在桌前做的,桌面上的 Carbon 免费而且很好用。

支持买原生应用的理由很窄也很具体:你经常做这件事,你在手机上做,而这份摩擦付出的代价已经超过了这个应用的价格。

如果这说的是你,如何在 iPhone 上把代码变成图片会完整走一遍,在 iPhone 上用 Carbon.now.sh 则更深入地讲浏览器里会坏在哪。