[{"data":1,"prerenderedAt":1158},["ShallowReactive",2],{"msfe-doc:\u002Fguide\u002Fcommands":3},{"id":4,"title":5,"body":6,"description":1146,"extension":1147,"keywords":1148,"locale":1151,"meta":1152,"navigation":190,"order":225,"path":1153,"section":1154,"seo":1155,"stem":1156,"__hash__":1157},"docs\u002Fguide\u002Fcommands.zh-CN.md","命令与原子事务",{"type":7,"value":8,"toc":1138},"minimark",[9,13,22,146,164,167,495,506,509,524,550,560,563,631,646,649,766,770,793,808,824,835,1102,1115,1121,1134],[10,11,12],"h2",{"id":12},"三种调用方式",[14,15,16,17,21],"p",{},"以下调用假设实例安装了 ",[18,19,20],"code",{},"StarterKit","。命令的 TypeScript 类型可见，不代表运行时功能已经安装。",[23,24,29],"pre",{"className":25,"code":26,"language":27,"meta":28,"style":28},"language-ts shiki shiki-themes github-light github-light github-dark","const applied = editor.commands.toggleBold()\nconst enabled = editor.can().toggleBold()\nconst committed = editor.chain().insertText('A').insertText('B').run()\nif (!committed) console.warn(editor.lastCommandResult)\n","ts","",[18,30,31,58,81,125],{"__ignoreMap":28},[32,33,36,40,44,47,51,55],"span",{"class":34,"line":35},"line",1,[32,37,39],{"class":38},"sDD9d","const",[32,41,43],{"class":42},"sUNQB"," applied",[32,45,46],{"class":38}," =",[32,48,50],{"class":49},"sVPnS"," editor.commands.",[32,52,54],{"class":53},"sgQzM","toggleBold",[32,56,57],{"class":49},"()\n",[32,59,61,63,66,68,71,74,77,79],{"class":34,"line":60},2,[32,62,39],{"class":38},[32,64,65],{"class":42}," enabled",[32,67,46],{"class":38},[32,69,70],{"class":49}," editor.",[32,72,73],{"class":53},"can",[32,75,76],{"class":49},"().",[32,78,54],{"class":53},[32,80,57],{"class":49},[32,82,84,86,89,91,93,96,98,101,104,108,111,113,115,118,120,123],{"class":34,"line":83},3,[32,85,39],{"class":38},[32,87,88],{"class":42}," committed",[32,90,46],{"class":38},[32,92,70],{"class":49},[32,94,95],{"class":53},"chain",[32,97,76],{"class":49},[32,99,100],{"class":53},"insertText",[32,102,103],{"class":49},"(",[32,105,107],{"class":106},"s-HEn","'A'",[32,109,110],{"class":49},").",[32,112,100],{"class":53},[32,114,103],{"class":49},[32,116,117],{"class":106},"'B'",[32,119,110],{"class":49},[32,121,122],{"class":53},"run",[32,124,57],{"class":49},[32,126,128,131,134,137,140,143],{"class":34,"line":127},4,[32,129,130],{"class":38},"if",[32,132,133],{"class":49}," (",[32,135,136],{"class":38},"!",[32,138,139],{"class":49},"committed) console.",[32,141,142],{"class":53},"warn",[32,144,145],{"class":49},"(editor.lastCommandResult)\n",[14,147,148,151,152,155,156,159,160,163],{},[18,149,150],{},"commands"," 返回布尔结果；",[18,153,154],{},"can()"," 只试算，不发布事务，也不更新 ",[18,157,158],{},"lastCommandResult","。命令链在一个草稿上顺序执行，最后 ",[18,161,162],{},"run()"," 一次提交；任何一步失败都会放弃整条链。它不能包含异步步骤。",[10,165,166],{"id":166},"写一个会参与命令链的业务命令",[23,168,170],{"className":25,"code":169,"language":27,"meta":28,"style":28},"import { Extension } from '@quirekit\u002Fmsfe-core'\n\ndeclare module '@quirekit\u002Fmsfe-core' {\n  interface Commands\u003CReturnType> {\n    \u002F** Commands installed by the signature feature. *\u002F\n    signature: {\n      \u002F** @param name - Literal author name. @returns Command outcome. *\u002F\n      insertSignature(name: string): ReturnType\n    }\n  }\n}\n\nexport const Signature = Extension.create({\n  name: 'signature',\n  addCommands() {\n    return {\n      insertSignature: (name: string) => ({ tr }) => {\n        if (!name.trim() || \u002F[\\r\\n]\u002F.test(name)) return false\n        return tr.insertText(`— ${name.trim()}`)\n      },\n    }\n  },\n})\n",[18,171,172,186,192,206,223,230,242,263,287,293,299,305,310,333,345,354,362,395,441,472,478,483,489],{"__ignoreMap":28},[32,173,174,177,180,183],{"class":34,"line":35},[32,175,176],{"class":38},"import",[32,178,179],{"class":49}," { Extension } ",[32,181,182],{"class":38},"from",[32,184,185],{"class":106}," '@quirekit\u002Fmsfe-core'\n",[32,187,188],{"class":34,"line":60},[32,189,191],{"emptyLinePlaceholder":190},true,"\n",[32,193,194,197,200,203],{"class":34,"line":83},[32,195,196],{"class":38},"declare",[32,198,199],{"class":38}," module",[32,201,202],{"class":106}," '@quirekit\u002Fmsfe-core'",[32,204,205],{"class":49}," {\n",[32,207,208,211,214,217,220],{"class":34,"line":127},[32,209,210],{"class":38},"  interface",[32,212,213],{"class":53}," Commands",[32,215,216],{"class":49},"\u003C",[32,218,219],{"class":53},"ReturnType",[32,221,222],{"class":49},"> {\n",[32,224,226],{"class":34,"line":225},5,[32,227,229],{"class":228},"sqmzS","    \u002F** Commands installed by the signature feature. *\u002F\n",[32,231,233,237,240],{"class":34,"line":232},6,[32,234,236],{"class":235},"sde8i","    signature",[32,238,239],{"class":38},":",[32,241,205],{"class":49},[32,243,245,248,251,254,257,260],{"class":34,"line":244},7,[32,246,247],{"class":228},"      \u002F** ",[32,249,250],{"class":38},"@param",[32,252,253],{"class":49}," name",[32,255,256],{"class":228}," - Literal author name. ",[32,258,259],{"class":38},"@returns",[32,261,262],{"class":228}," Command outcome. *\u002F\n",[32,264,266,269,271,274,276,279,282,284],{"class":34,"line":265},8,[32,267,268],{"class":53},"      insertSignature",[32,270,103],{"class":49},[32,272,273],{"class":235},"name",[32,275,239],{"class":38},[32,277,278],{"class":42}," string",[32,280,281],{"class":49},")",[32,283,239],{"class":38},[32,285,286],{"class":53}," ReturnType\n",[32,288,290],{"class":34,"line":289},9,[32,291,292],{"class":49},"    }\n",[32,294,296],{"class":34,"line":295},10,[32,297,298],{"class":49},"  }\n",[32,300,302],{"class":34,"line":301},11,[32,303,304],{"class":49},"}\n",[32,306,308],{"class":34,"line":307},12,[32,309,191],{"emptyLinePlaceholder":190},[32,311,313,316,319,322,324,327,330],{"class":34,"line":312},13,[32,314,315],{"class":38},"export",[32,317,318],{"class":38}," const",[32,320,321],{"class":42}," Signature",[32,323,46],{"class":38},[32,325,326],{"class":49}," Extension.",[32,328,329],{"class":53},"create",[32,331,332],{"class":49},"({\n",[32,334,336,339,342],{"class":34,"line":335},14,[32,337,338],{"class":49},"  name: ",[32,340,341],{"class":106},"'signature'",[32,343,344],{"class":49},",\n",[32,346,348,351],{"class":34,"line":347},15,[32,349,350],{"class":53},"  addCommands",[32,352,353],{"class":49},"() {\n",[32,355,357,360],{"class":34,"line":356},16,[32,358,359],{"class":38},"    return",[32,361,205],{"class":49},[32,363,365,367,370,372,374,376,379,382,385,388,391,393],{"class":34,"line":364},17,[32,366,268],{"class":53},[32,368,369],{"class":49},": (",[32,371,273],{"class":235},[32,373,239],{"class":38},[32,375,278],{"class":42},[32,377,378],{"class":49},") ",[32,380,381],{"class":38},"=>",[32,383,384],{"class":49}," ({ ",[32,386,387],{"class":235},"tr",[32,389,390],{"class":49}," }) ",[32,392,381],{"class":38},[32,394,205],{"class":49},[32,396,398,401,403,405,408,411,414,417,420,423,426,429,432,435,438],{"class":34,"line":397},18,[32,399,400],{"class":38},"        if",[32,402,133],{"class":49},[32,404,136],{"class":38},[32,406,407],{"class":49},"name.",[32,409,410],{"class":53},"trim",[32,412,413],{"class":49},"() ",[32,415,416],{"class":38},"||",[32,418,419],{"class":106}," \u002F",[32,421,422],{"class":42},"[\\r\\n]",[32,424,425],{"class":106},"\u002F",[32,427,428],{"class":49},".",[32,430,431],{"class":53},"test",[32,433,434],{"class":49},"(name)) ",[32,436,437],{"class":38},"return",[32,439,440],{"class":42}," false\n",[32,442,444,447,450,452,454,457,459,461,463,466,469],{"class":34,"line":443},19,[32,445,446],{"class":38},"        return",[32,448,449],{"class":49}," tr.",[32,451,100],{"class":53},[32,453,103],{"class":49},[32,455,456],{"class":106},"`— ${",[32,458,273],{"class":49},[32,460,428],{"class":106},[32,462,410],{"class":53},[32,464,465],{"class":106},"()",[32,467,468],{"class":106},"}`",[32,470,471],{"class":49},")\n",[32,473,475],{"class":34,"line":474},20,[32,476,477],{"class":49},"      },\n",[32,479,481],{"class":34,"line":480},21,[32,482,292],{"class":49},[32,484,486],{"class":34,"line":485},22,[32,487,488],{"class":49},"  },\n",[32,490,492],{"class":34,"line":491},23,[32,493,494],{"class":49},"})\n",[14,496,497,498,501,502,505],{},"安装 ",[18,499,500],{},"Signature"," 后即可调用 ",[18,503,504],{},"editor.can().insertSignature('Ada')","。若业务需要 Markdown 字面值，应使用正确的字段编码或限制允许字符，不要误把用户文本当作可信语法模板。",[10,507,508],{"id":508},"草稿状态和嵌套命令",[14,510,511,512,515,516,519,520,523],{},"命令工厂接收业务参数，返回同步纯函数。读取 ",[18,513,514],{},"props.state"," 或 ",[18,517,518],{},"tr.state","，它们包含链中前面步骤的结果。读 ",[18,521,522],{},"props.editor.state"," 会读到尚未提交的旧状态。",[14,525,526,527,530,531,530,534,537,538,541,542,545,546,549],{},"使用 ",[18,528,529],{},"props.commands","、",[18,532,533],{},"props.chain()",[18,535,536],{},"tr.replace()"," 等继续同一草稿。命令内部不能调用 ",[18,539,540],{},"editor.commands"," 提交另一笔修改，不能手动调用 ",[18,543,544],{},"dispatch","，不能发请求、打开弹窗或修改 ",[18,547,548],{},"storage","。试算同样会调用你的代码。",[14,551,552,555,556,559],{},[18,553,554],{},"tr.replace(from, to, insert)"," 的坐标属于当前草稿；前一步改变长度后，后续步骤需要重新计算或映射坐标。",[18,557,558],{},"tr.apply()"," 是高级 CodeMirror 入口，同样必须遵守该坐标规则。",[10,561,562],{"id":562},"已有规划函数",[23,564,566],{"className":25,"code":565,"language":27,"meta":28,"style":28},"import { sourceCommand } from '@quirekit\u002Fmsfe-core'\n\neditor.chain().command(sourceCommand(state => ({\n  changes: { from: state.selection.main.from, to: state.selection.main.to, insert: 'approved' },\n}))).run()\n",[18,567,568,579,583,611,622],{"__ignoreMap":28},[32,569,570,572,575,577],{"class":34,"line":35},[32,571,176],{"class":38},[32,573,574],{"class":49}," { sourceCommand } ",[32,576,182],{"class":38},[32,578,185],{"class":106},[32,580,581],{"class":34,"line":60},[32,582,191],{"emptyLinePlaceholder":190},[32,584,585,588,590,592,595,597,600,602,605,608],{"class":34,"line":83},[32,586,587],{"class":49},"editor.",[32,589,95],{"class":53},[32,591,76],{"class":49},[32,593,594],{"class":53},"command",[32,596,103],{"class":49},[32,598,599],{"class":53},"sourceCommand",[32,601,103],{"class":49},[32,603,604],{"class":235},"state",[32,606,607],{"class":38}," =>",[32,609,610],{"class":49}," ({\n",[32,612,613,616,619],{"class":34,"line":127},[32,614,615],{"class":49},"  changes: { from: state.selection.main.from, to: state.selection.main.to, insert: ",[32,617,618],{"class":106},"'approved'",[32,620,621],{"class":49}," },\n",[32,623,624,627,629],{"class":34,"line":225},[32,625,626],{"class":49},"}))).",[32,628,122],{"class":53},[32,630,57],{"class":49},[14,632,633,634,637,638,641,642,645],{},"直接运行纯规划函数可用 ",[18,635,636],{},"editor.run(planner, target?)","，它返回 ",[18,639,640],{},"MsfeResult","。返回 ",[18,643,644],{},"null"," 表示不适用；不要直接改写 DOM 来代替事务。",[10,647,648],{"id":648},"失败需要处理",[650,651,652,667],"table",{},[653,654,655],"thead",{},[387,656,657,661,664],{},[658,659,660],"th",{},"原因",[658,662,663],{},"含义",[658,665,666],{},"宿主动作",[668,669,670,684,697,710,723,736,749],"tbody",{},[387,671,672,678,681],{},[673,674,675],"td",{},[18,676,677],{},"not-installed",[673,679,680],{},"类型存在但功能没安装",[673,682,683],{},"检查预设是否禁用或漏装",[387,685,686,691,694],{},[673,687,688],{},[18,689,690],{},"not-applicable",[673,692,693],{},"当前语法或选区不接受此动作",[673,695,696],{},"禁用按钮或保留原内容",[387,698,699,704,707],{},[673,700,701],{},[18,702,703],{},"readonly",[673,705,706],{},"显式只读或 locked",[673,708,709],{},"关闭写操作",[387,711,712,717,720],{},[673,713,714],{},[18,715,716],{},"stale-target",[673,718,719],{},"目标的实例、文档或版本已变",[673,721,722],{},"重新确认意图，不能直接重放旧偏移",[387,724,725,730,733],{},[673,726,727],{},[18,728,729],{},"invalid-change",[673,731,732],{},"修改范围或事务无效",[673,734,735],{},"检查坐标与字段编码",[387,737,738,743,746],{},[673,739,740],{},[18,741,742],{},"composing",[673,744,745],{},"组合输入正在拥有编辑过程",[673,747,748],{},"等待本次输入结束，不抢焦点",[387,750,751,760,763],{},[673,752,753,756,757],{},[18,754,755],{},"destroyed"," \u002F ",[18,758,759],{},"not-mounted",[673,761,762],{},"生命周期无效",[673,764,765],{},"结束动作并释放资源",[10,767,769],{"id":768},"快捷键撤销与测试","快捷键、撤销与测试",[14,771,772,773,776,777,780,781,784,785,788,789,792],{},"结构性回车使用扩展的 ",[18,774,775],{},"addBlockInput()","，由块声明 ",[18,778,779],{},"enter","（Enter）、",[18,782,783],{},"lineBreak","（Shift-Enter）和 ",[18,786,787],{},"exit","（Mod-Enter）。普通业务快捷键继续使用 ",[18,790,791],{},"addKeyboardShortcuts()","。",[14,794,795,796,799,800,803,804,807],{},"处理器根据当前源码、选区和块边界决定行为，不累计按键次数。返回一个 ",[18,797,798],{},"TransactionSpec"," 表示整笔处理，",[18,801,802],{},"'parent'"," 表示委托外层块，",[18,805,806],{},"'native'"," 表示回到既有快捷键链；后两者也能直接作为规则值。未声明的意图委托父级，未注册的语法 Block 阻止外层默认规则接管。块内普通段落应显式委托，让列表、引用或自定义容器获得处理机会。",[14,809,810,811,814,815,818,819,530,821,823],{},"公共层先检查模式、只读、组合输入和已解析范围，再沿每个选区端点的祖先查找。所有端点必须解析到同一个处理函数才调用一次，否则整笔回退。处理器接收的 ",[18,812,813],{},"targets"," 是端点及其所有者，同一非空选区有两个端点；实际修改仍使用 ",[18,816,817],{},"state.selection","。处理器必须纯粹，不得调用 ",[18,820,544],{},[18,822,540],{}," 或修改 storage，返回的编辑由公共层一次提交和撤销。",[14,825,826,827,830,831,834],{},"每个 parser 节点只允许一个声明所有者，通过原扩展的 ",[18,828,829],{},".extend()"," 替换规则，不要安装两个扩展争用节点。下面的最小示例让顶层二级标题末尾回车进入新段落；在 ",[18,832,833],{},"StarterKit.configure({ heading: SectionHeading })"," 中安装它。产品 MD Editor 已为段落、标题、列表、引用、容器、代码和表格配置完整默认规则。",[23,836,838],{"className":25,"code":837,"language":27,"meta":28,"style":28},"import { Heading } from '@quirekit\u002Fmsfe-heading'\n\nexport const SectionHeading = Heading.extend({\n  \u002F** @returns A pure, source-owned heading boundary behavior. *\u002F\n  addBlockInput() {\n    return [{\n      nodes: ['ATXHeading2'],\n      enter: ({ state, targets }) => {\n        const range = state.selection.main\n        if (state.selection.ranges.length !== 1 || !range.empty\n          || !targets[0]!.node.parent?.type.isTop\n          || range.head !== targets[0]!.node.to) return 'native'\n        return {\n          changes: { from: range.head, insert: '\\n\\n' },\n          selection: { anchor: range.head + 2 },\n          scrollIntoView: true,\n          userEvent: 'input',\n        }\n      },\n      lineBreak: 'native',\n    }]\n  },\n})\n",[18,839,840,852,856,875,885,892,899,910,931,944,969,990,1017,1023,1038,1051,1061,1071,1076,1080,1089,1094,1098],{"__ignoreMap":28},[32,841,842,844,847,849],{"class":34,"line":35},[32,843,176],{"class":38},[32,845,846],{"class":49}," { Heading } ",[32,848,182],{"class":38},[32,850,851],{"class":106}," '@quirekit\u002Fmsfe-heading'\n",[32,853,854],{"class":34,"line":60},[32,855,191],{"emptyLinePlaceholder":190},[32,857,858,860,862,865,867,870,873],{"class":34,"line":83},[32,859,315],{"class":38},[32,861,318],{"class":38},[32,863,864],{"class":42}," SectionHeading",[32,866,46],{"class":38},[32,868,869],{"class":49}," Heading.",[32,871,872],{"class":53},"extend",[32,874,332],{"class":49},[32,876,877,880,882],{"class":34,"line":127},[32,878,879],{"class":228},"  \u002F** ",[32,881,259],{"class":38},[32,883,884],{"class":228}," A pure, source-owned heading boundary behavior. *\u002F\n",[32,886,887,890],{"class":34,"line":225},[32,888,889],{"class":53},"  addBlockInput",[32,891,353],{"class":49},[32,893,894,896],{"class":34,"line":232},[32,895,359],{"class":38},[32,897,898],{"class":49}," [{\n",[32,900,901,904,907],{"class":34,"line":244},[32,902,903],{"class":49},"      nodes: [",[32,905,906],{"class":106},"'ATXHeading2'",[32,908,909],{"class":49},"],\n",[32,911,912,915,918,920,923,925,927,929],{"class":34,"line":265},[32,913,914],{"class":53},"      enter",[32,916,917],{"class":49},": ({ ",[32,919,604],{"class":235},[32,921,922],{"class":49},", ",[32,924,813],{"class":235},[32,926,390],{"class":49},[32,928,381],{"class":38},[32,930,205],{"class":49},[32,932,933,936,939,941],{"class":34,"line":289},[32,934,935],{"class":38},"        const",[32,937,938],{"class":42}," range",[32,940,46],{"class":38},[32,942,943],{"class":49}," state.selection.main\n",[32,945,946,948,951,954,957,960,963,966],{"class":34,"line":295},[32,947,400],{"class":38},[32,949,950],{"class":49}," (state.selection.ranges.",[32,952,953],{"class":42},"length",[32,955,956],{"class":38}," !==",[32,958,959],{"class":42}," 1",[32,961,962],{"class":38}," ||",[32,964,965],{"class":38}," !",[32,967,968],{"class":49},"range.empty\n",[32,970,971,974,976,979,982,985,987],{"class":34,"line":301},[32,972,973],{"class":38},"          ||",[32,975,965],{"class":38},[32,977,978],{"class":49},"targets[",[32,980,981],{"class":42},"0",[32,983,984],{"class":49},"]",[32,986,136],{"class":38},[32,988,989],{"class":49},".node.parent?.type.isTop\n",[32,991,992,994,997,1000,1003,1005,1007,1009,1012,1014],{"class":34,"line":307},[32,993,973],{"class":38},[32,995,996],{"class":49}," range.head ",[32,998,999],{"class":38},"!==",[32,1001,1002],{"class":49}," targets[",[32,1004,981],{"class":42},[32,1006,984],{"class":49},[32,1008,136],{"class":38},[32,1010,1011],{"class":49},".node.to) ",[32,1013,437],{"class":38},[32,1015,1016],{"class":106}," 'native'\n",[32,1018,1019,1021],{"class":34,"line":312},[32,1020,446],{"class":38},[32,1022,205],{"class":49},[32,1024,1025,1028,1031,1034,1036],{"class":34,"line":335},[32,1026,1027],{"class":49},"          changes: { from: range.head, insert: ",[32,1029,1030],{"class":106},"'",[32,1032,1033],{"class":42},"\\n\\n",[32,1035,1030],{"class":106},[32,1037,621],{"class":49},[32,1039,1040,1043,1046,1049],{"class":34,"line":347},[32,1041,1042],{"class":49},"          selection: { anchor: range.head ",[32,1044,1045],{"class":38},"+",[32,1047,1048],{"class":42}," 2",[32,1050,621],{"class":49},[32,1052,1053,1056,1059],{"class":34,"line":356},[32,1054,1055],{"class":49},"          scrollIntoView: ",[32,1057,1058],{"class":42},"true",[32,1060,344],{"class":49},[32,1062,1063,1066,1069],{"class":34,"line":364},[32,1064,1065],{"class":49},"          userEvent: ",[32,1067,1068],{"class":106},"'input'",[32,1070,344],{"class":49},[32,1072,1073],{"class":34,"line":397},[32,1074,1075],{"class":49},"        }\n",[32,1077,1078],{"class":34,"line":443},[32,1079,477],{"class":49},[32,1081,1082,1085,1087],{"class":34,"line":474},[32,1083,1084],{"class":49},"      lineBreak: ",[32,1086,806],{"class":106},[32,1088,344],{"class":49},[32,1090,1091],{"class":34,"line":480},[32,1092,1093],{"class":49},"    }]\n",[32,1095,1096],{"class":34,"line":485},[32,1097,488],{"class":49},[32,1099,1100],{"class":34,"line":491},[32,1101,494],{"class":49},[14,1103,1104,1105,1107,1108,792,1111,1114],{},"在扩展的 ",[18,1106,791],{}," 返回 ",[18,1109,1110],{},"{ 'Mod-Shift-s': () => this.editor.commands.insertSignature('Ada') }",[18,1112,1113],{},"false"," 允许其他绑定继续处理；避免覆盖浏览器或输入法行为而不给出替代入口。",[14,1116,1117,1118,1120],{},"用户可感知的一次动作尽量通过一条命令链提交；连续原生输入仍遵循编辑历史的分组规则。测试至少覆盖：单次和链中调用、链中失败不留半截修改、",[18,1119,154],{}," 不改变状态、只读拒绝、撤销恢复原始拼写，以及多选区的处理策略。",[14,1122,1123,1124,1129,1130,792],{},"需要跨弹窗或异步请求保留位置时，先阅读 ",[1125,1126,1128],"a",{"href":1127},"\u002Fguide\u002Fselection","选区与异步目标","。签名见 ",[1125,1131,1133],{"href":1132},"\u002Fapi\u002Fcommands","命令 API",[1135,1136,1137],"style",{},"html pre.shiki code .sDD9d, html code.shiki .sDD9d{--shiki-default:#D73A49;--shiki-light:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sUNQB, html code.shiki .sUNQB{--shiki-default:#005CC5;--shiki-light:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sVPnS, html code.shiki .sVPnS{--shiki-default:#24292E;--shiki-light:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sgQzM, html code.shiki .sgQzM{--shiki-default:#6F42C1;--shiki-light:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .s-HEn, html code.shiki .s-HEn{--shiki-default:#032F62;--shiki-light:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sqmzS, html code.shiki .sqmzS{--shiki-default:#6A737D;--shiki-light:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sde8i, html code.shiki .sde8i{--shiki-default:#E36209;--shiki-light:#E36209;--shiki-dark:#FFAB70}",{"title":28,"searchDepth":60,"depth":60,"links":1139},[1140,1141,1142,1143,1144,1145],{"id":12,"depth":60,"text":12},{"id":166,"depth":60,"text":166},{"id":508,"depth":60,"text":508},{"id":562,"depth":60,"text":562},{"id":648,"depth":60,"text":648},{"id":768,"depth":60,"text":769},"调用、组合、查询和编写命令，正确处理失败、只读与撤销。","md",[150,95,73,1149,703,1150],"undo","transaction","zh-CN",{},"\u002Fguide\u002Fcommands","接入指南",{"title":5,"description":1146},"guide\u002Fcommands.zh-CN","p3RsjDd4SQpHwDpO9s78ZG_Q0kpkVUBZBaqiXX0CC8U",1793046311418]