获取Monaco命令/操作ID列表?

7

有没有一种方法可以获取Monaco可用命令/操作及其ID的列表,例如editor.action.formatDocument

在文档中似乎没有任何内容,并且我很难在VS Code存储库中找到已注册的操作和命令。命令面板显示了大部分内容,但如果您想使用executeCommand手动调用它们,则没有它们的ID指示。

2个回答

21

editor.getSupportedActions() 是我在寻找的东西。

您可以像这样使用它来获取操作 ID 列表:

let actions = editor.getSupportedActions().map((a) => a.id);
console.log(actions);

在我目前的 Monaco 设置中,它返回了这样的列表:

[
  "actions.find",
  "actions.findWithSelection",
  "cursorRedo",
  "cursorUndo",
  "deleteAllLeft",
  "deleteAllRight",
  "editor.action.addCommentLine",
  "editor.action.addCursorsToBottom",
  "editor.action.addCursorsToTop",
  "editor.action.addSelectionToNextFindMatch",
  "editor.action.addSelectionToPreviousFindMatch",
  "editor.action.blockComment",
  "editor.action.clipboardCopyWithSyntaxHighlightingAction",
  "editor.action.commentLine",
  "editor.action.copyLinesDownAction",
  "editor.action.copyLinesUpAction",
  "editor.action.deleteLines",
  "editor.action.detectIndentation",
  "editor.action.duplicateSelection",
  "editor.action.fontZoomIn",
  "editor.action.fontZoomOut",
  "editor.action.fontZoomReset",
  "editor.action.formatDocument",
  "editor.action.formatSelection",
  "editor.action.gotoLine",
  "editor.action.goToReferences",
  "editor.action.indentationToSpaces",
  "editor.action.indentationToTabs",
  "editor.action.indentLines",
  "editor.action.indentUsingSpaces",
  "editor.action.indentUsingTabs",
  "editor.action.inPlaceReplace.down",
  "editor.action.inPlaceReplace.up",
  "editor.action.insertCursorAbove",
  "editor.action.insertCursorAtEndOfEachLineSelected",
  "editor.action.insertCursorBelow",
  "editor.action.insertLineAfter",
  "editor.action.insertLineBefore",
  "editor.action.inspectTokens",
  "editor.action.joinLines",
  "editor.action.jumpToBracket",
  "editor.action.marker.next",
  "editor.action.marker.nextInFiles",
  "editor.action.marker.prev",
  "editor.action.marker.prevInFiles",
  "editor.action.moveCarretLeftAction",
  "editor.action.moveCarretRightAction",
  "editor.action.moveLinesDownAction",
  "editor.action.moveLinesUpAction",
  "editor.action.moveSelectionToNextFindMatch",
  "editor.action.moveSelectionToPreviousFindMatch",
  "editor.action.nextMatchFindAction",
  "editor.action.nextSelectionMatchFindAction",
  "editor.action.onTypeRename",
  "editor.action.openLink",
  "editor.action.outdentLines",
  "editor.action.peekDefinition",
  "editor.action.previousMatchFindAction",
  "editor.action.previousSelectionMatchFindAction",
  "editor.action.quickCommand",
  "editor.action.quickFix",
  "editor.action.quickOutline",
  "editor.action.refactor",
  "editor.action.referenceSearch.trigger",
  "editor.action.reindentlines",
  "editor.action.reindentselectedlines",
  "editor.action.removeCommentLine",
  "editor.action.rename",
  "editor.action.revealDefinition",
  "editor.action.revealDefinitionAside",
  "editor.action.selectHighlights",
  "editor.action.selectToBracket",
  "editor.action.setSelectionAnchor",
  "editor.action.showAccessibilityHelp",
  "editor.action.showContextMenu",
  "editor.action.showDefinitionPreviewHover",
  "editor.action.showHover",
  "editor.action.smartSelect.expand",
  "editor.action.smartSelect.shrink",
  "editor.action.sortLinesAscending",
  "editor.action.sortLinesDescending",
  "editor.action.sourceAction",
  "editor.action.startFindReplaceAction",
  "editor.action.toggleHighContrast",
  "editor.action.toggleTabFocusMode",
  "editor.action.transformToLowercase",
  "editor.action.transformToTitlecase",
  "editor.action.transformToUppercase",
  "editor.action.transpose",
  "editor.action.transposeLetters",
  "editor.action.triggerParameterHints",
  "editor.action.triggerSuggest",
  "editor.action.trimTrailingWhitespace",
  "editor.action.wordHighlight.trigger",
  "editor.fold",
  "editor.foldAll",
  "editor.foldAllBlockComments",
  "editor.foldAllMarkerRegions",
  "editor.foldLevel1",
  "editor.foldLevel2",
  "editor.foldLevel3",
  "editor.foldLevel4",
  "editor.foldLevel5",
  "editor.foldLevel6",
  "editor.foldLevel7",
  "editor.foldRecursively",
  "editor.toggleFold",
  "editor.unfold",
  "editor.unfoldAll",
  "editor.unfoldAllMarkerRegions",
  "editor.unfoldRecursively"
]

值得注意的是,这并不包括上下文菜单或命令调色板中显示的所有操作,例如“格式化文档”/“格式化选定内容”,如果您在创建编辑器实例后立即调用它。可能存在某种延迟,在加载语言时其他命令将被初始化。 - shshaw
你成功了吗? - noririco
editor.getSupportedActions() 可以正常工作。如果您过早地调用它,可能不会显示所有命令。一旦您获得了操作 ID,就可以使用 editor.trigger() 来调用它们。 - shshaw

0

或者你可以使用:

let actions = editor.getActions();
console.log(actions);

let actions = editor._actions;
console.log(actions);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接