一篇博客文章把代码示例渲染成带样式的图片。一位同事把他 IDE 的截图贴进了一条 PR 评论里。某个老工具的文档只以维基上的终端截图形式存在。Stack Overflow 的回答里也嵌入了图片形式的代码,因为格式化工具把原始代码弄乱了。在每一种情况下,代码都清晰可见、可读,但它是一张图片——而通过重新打字来复制图片里的代码,正是花上三十分钟去调试一个你以为是冒号、其实是分号的 bug 的典型方式。
代码要求字符级完美的提取
与散文不同,代码对近似值零容忍。用连字符代替下划线会破坏一个 import。一个放错位置的括号会让一个函数失效。该用大写字母的地方用了小写字母,会彻底改变一个变量引用。当你从图片重新打代码时,每一个字符都是潜在的失败点——而你引入的 bug 是隐形的,因为它们乍一看完全正确。
对于很长的命令、多行代码片段,或不熟悉的语法,这个问题会被放大。一条带十个参数的 Docker run 命令、一个正则表达式,或者一条带管道和重定向的 shell 命令流水线——这些正是最容易以图片形式分享、也几乎不可能被准确重新打出来的内容。
从屏幕上的任何图片提取代码
Optic 直接从你的屏幕读取代码字符。打开包含代码的图片、教程页面或截图,从菜单栏启用 Optic,在代码片段上拖出选框。识别出的文字——保留缩进、特殊字符和行结构——会直接进入你的剪贴板。
终端命令
文档和教程中常见的安装脚本、构建命令和部署流水线的终端截图。选中命令块,粘贴进你的终端,并确信参数、路径和参数值都完全正确。
IDE 截图
当一位同事分享他们代码的截图——无论是在 Slack、GitHub 评论,还是邮件里——提取代码并粘贴进你自己的编辑器。真正地测试它、修改它或审查它,而不是眯着眼睛看一张图片。
多片段提取
教程通常会在一个页面里展示多个代码块。依次提取每一个。Optic 的捕获历史会保存每一次提取,让你可以把整篇教程都处理完,再从历史下拉列表里逐一粘贴每个片段到你的项目中。