如何获取Monaco可用命令/动作及其ID列表?
获取Monaco编辑器可用命令/动作及其ID的实用方法
我完全懂你找Monaco命令ID的痛苦——官方文档确实没把这块讲透,VS Code仓库里找起来也像大海捞针。给你几个亲测有效的方法,能快速拿到你需要的命令ID:
1. 直接通过Monaco API枚举所有命令/动作
如果你已经有一个编辑器实例(比如代码里的editor变量),可以在浏览器控制台或者你的代码中执行这段代码,一次性输出所有动作和对应的ID:
// 获取编辑器实例支持的所有动作 const actions = editor.getSupportedActions(); actions.forEach(action => { console.log(`动作名称: ${action.label}, ID: ${action.id}`); }); // 获取全局注册的所有命令ID const globalCommands = monaco.commands.getCommands(); globalCommands.forEach(cmdId => { console.log(`全局命令ID: ${cmdId}`); });
执行后,你就能看到像editor.action.formatDocument这类目标ID清晰地列出来。
2. 借助VS Code开发者工具抓取命令ID
因为Monaco是VS Code编辑器的核心引擎,两者的命令ID大部分是通用的,你可以利用VS Code的调试工具来快速查找:
- 打开VS Code的命令面板(快捷键:Ctrl/Cmd + Shift + P)
- 执行「Developer: Toggle Developer Tools」打开调试面板
- 切换到「Console」标签,输入
commands.getCommands()并回车,就能看到所有命令ID的完整列表 - 如果你想找某个特定动作的ID,可以先执行该动作,然后立刻在控制台输入
window._lastActionId,就能直接拿到刚才执行动作的对应ID(这是VS Code内部的实用小技巧)
3. 查看Monaco的类型定义文件(TypeScript开发者友好)
如果你用TypeScript开发,直接查看monaco-editor包的类型定义文件(通常在node_modules/monaco-editor/monaco.d.ts),里面会定义大量命令ID的常量,比如:
// 示例:类型定义中的命令常量 namespace monaco.editor { export const Commands = { FormatDocument: 'editor.action.formatDocument', // 更多命令常量... }; }
通过这些常量,你能准确对应到实际的命令ID,还能获得类型提示。
内容的提问来源于stack exchange,提问作者shshaw
相关产品推荐
相关产品推荐

