正确提取JSON-LD字段需用^和$锚定整行正则(如^.*@type.*$),再Ctrl+L转多光标;操作前须清理缩进、空格、注释及编码问题,避免JSON校验失败。

多光标提取 JSON-LD 字段名必须用 ^ 和 $ 锚定整行
只输 name 然后按 Ctrl+Shift+F 或 Find All,结果只会高亮那 4 个字母——不是你要的字段所在行。JSON-LD 的 @context、@type、@id 这类键通常独占一行或紧跟冒号,但 Sublime 默认不自动扩展匹配范围。
正确做法是:在 Find 面板输入 ^.*@type.*$(含 ^ 和 $),再点 Find All;接着立刻按 Ctrl+L(Win/Linux)或 Cmd+L(macOS),把所有匹配行转为独立光标。漏掉任一端锚点,就无法保证后续操作作用于整行。
- 如果目标行带缩进(如
"@type": "Person",),^仍能匹配,但光标会落在缩进空格上——后续加引号时容易错位 - 跨文件提取时,
Ctrl+Shift+F的“Where”路径必须明确限定目录,否则可能扫到 node_modules 或备份文件里的干扰项 - 若某行含注释(如
"@id": "user123" // main profile),正则^.*@id.*$仍能捕获整行,但后续格式化前得先清理注释,否则 JSON 校验失败
用 Ctrl+Shift+L 拆光标后,加引号和冒号要分步执行
拆完光标后直接打 ",结果可能是 "@type": "Person" 变成 "@type": "Person""——因为光标停在行尾,而你没意识到有些行末已有引号或逗号。
安全流程只有两步:先统一在行首插 ",再跳到行尾统一补 ":。中间不能穿插其他操作,否则光标位置偏移。
- 行首插引号前,务必确认光标真正在文本起始处:缩进行按一次
Home不够,得按Ctrl+Home(Win)或Cmd+←(macOS) - 行尾有空格?先运行
Ctrl+Shift+P → Trim Trailing White Space,否则":会插在空格后面,变成"@type" :(带多余空格) - 如果部分行已含双引号(如
"@context"),而你又全打一遍,就会变成""@context""——此时该切回正则替换:Find: ("?)(@[^":\s]+)("?)\s*:,Replace: "$2":
生成嵌套 JSON-LD 结构时,括号匹配比多光标更可靠
想批量给 20 行字段名套上 "@type": { "type": "string" } 模板?别硬靠多光标填大括号——一旦某行缺右括号或缩进不齐,光标就错位,补进去的内容全乱。
详细的 Three.js 3D 图形参考,涵盖场景设置、相机、几何体、材质、光照、动画、控制器、加载器、数学工具和调试。
真正高效的做法是:先用正则生成扁平结构,再用 Pretty JSON 插件一键格式化。例如,对已提取的字段列表:
"@id" "@type" "@context"
执行正则替换:Find: ^"([^"]+)".*$,Replace: "$1": { "type": "string", "required": false },再全选 → Ctrl+Alt+J(Pretty JSON 默认快捷键)。
-
Pretty JSON要求输入是合法 JSON 片段,所以替换前必须确保每行结尾无逗号、无多余空格 - 如果字段需差异化配置(如
@id是 URI,@type是枚举),就得先用Ctrl+D单独选中@id行,再用多光标改其模板,避免全局误替 - 格式化后若发现缩进异常(如所有
type缩进多了一层),说明原始替换结果里混入了不可见字符(如 BOM 或全角空格),需用File → Reopen with Encoding → UTF-8重载
JSON-LD 的 @context 映射表生成容易忽略 key 冲突
从 MySQL 字段导出的列名(如 user_name、user_email)映射到 JSON-LD @context 时,多光标批量替换 _ 为 : 看似快,但 user_name → user:name 后,若 user 未在 @context 中定义前缀,整个文档就无效。
实际应分三步走:先用正则提取所有下划线字段名,再人工核对前缀归属,最后用 Text Pastry 插件插入序列号或固定前缀。
- 提取字段正则:
Find: ^([a-z_]+)_([a-z_]+)$,Replace: "$1:$2"—— 注意只处理纯小写字母+下划线的组合,避开带数字或大写的字段 - 若字段含大小写混合(如
userName),得先用正则转下划线:Find: ([a-z])([A-Z]),Replace: $1_$2,再跑上一步 -
@context块内 key 必须唯一,但多光标操作无法校验重复——比如同时生成"user": "https://schema.org/"和"user": "https://example.com/ns/",只会保留最后一个
SyntaxError: Unexpected token 或 Invalid @context mapping。

















