常用API
editor.create()
monaco.editor.create(this.$refs.code, {
value: this.defaultCode,
language: 'html',
foldingStrategy: 'indentation', // 代码可分小段折叠
tabCompletion: 'on', // tab键补全
tabSize: 2, // tab键代表的空格数
minimap: {
enabled: false // 关闭小地图
},
scrollBeyondLastLine: false // 滚动完最后一行后不准再滚动一屏幕
});
editor.getValue()
获取编辑器中的所有文本,并生成一个字符串返回,会保留所有信息(换行、缩进、注释等等)。
editor.updateOptions()
更新编辑器配置
editor.updateOptions({
readOnly: true // 只读
});
editor.getSelection()
获取编辑器中被选中文案的 range ,返回一个对象,如下:
{
startLineNumber: 0,
startColumnNumber: 0,
endLineNumber: 0,
endColumnNumber: 0,
}
editor.getModel()
获取编辑器当前的 textmodel
,一般不会直接使用,通过 textmodel
可以对文本各种操作。
editor.getModel().findMatches(str|regexp)
功能和 ⌘ + F
一致,通过字符串或正则表达式查找编辑器内匹配的文本,并返回匹配文本 range
的集合。
editor.getModel().getValueInRange(range)
通过 range
获取范围内的文本,返回一个字符串。
editor.getModel().getLinesContent(lineNumber)
如果传入 lineNumber
,则返回对应行的文本字符串,不传参则返回所有行的文本字符串的集合。
指定位置插入代码
与 editor.setValue()
不同,可以用 ⌘ + Z
撤销输入
monaco.editor.executeEdits('insert-code', [
{
range: {
startLineNumber: 1,
startColumn: 1,
endLineNumber: 2,
endColumn: 2
},
text, // 插入的代码
},
])
自定义右键菜单栏
monaco.editor.addAction({
id: '', // 菜单项 id
label: '', // 菜单项名称
keybindings: [this.monaco.KeyMod.CtrlCmd | this.monaco.KeyCode.KEY_J], // 绑定快捷键
contextMenuGroupId: '9_cutcopypaste', // 所属菜单的分组
run: () => {}, // 点击后执行的操作
})
标记错误
通过 monaco.editor.setModelMarkers
方法标记位置点,文档
monaco.editor.setModelMarkers(editor.getModel(), 'javascript',
[{
startLineNumber: 2,
endLineNumber: 2,
startColumn: 1,
endColumn: 10,
severity: monaco.MarkerSeverity.Error,
message: `语法错误`,
}],
);