摩纳哥编辑器 - `Action` 和 `Command` 之间的区别?

Monaco Editor - Difference between `Action` and `Command`?

在摩纳哥editor instance, you can call addAction oraddCommand

两者都提供了根据按键事件执行功能的能力

在线游乐场提供了如何 add a command or how to add an action 编辑器实例的示例。

操作示例

editor.addAction({
    id: 'my-unique-id',
    label: 'My Label!!!',
    keybindings: [monaco.KeyMod.CtrlCmd | monaco.KeyCode.Enter],
    run: function() { alert('action called') }
});

命令示例

editor.addCommand(
  monaco.KeyMod.CtrlCmd | monaco.KeyCode.Enter,
  function() { alert('called command') }
)

文档描述了类型定义、属性和方法。

但是,在提供何时使用每个、它们在编辑器中出现的位置以及每个提供什么的上下文方面,它是缺乏的。

动作和命令有什么区别?

我个人的印象是操作有点像进化的命令。首先引入了命令,后来认识到需要更多功能(例如上下文菜单集成),因此创建了 Action。出于兼容性原因 Command 无法在那时删除,因此两者今天仍然存在。