如何将文本插入摩纳哥编辑器?
How do I insert text into a Monaco Editor?
我的应用程序中嵌入了一个 monaco 代码编辑器。
如何以编程方式在特定行插入文本?
var editor = monaco.editor.create(document.getElementById("container"), {
value: "// First line\nfunction hello() {\n\talert('Hello world!');\n}\n// Last line",
language: "javascript",
lineNumbers: false,
roundedSelection: false,
scrollBeyondLastLine: false,
readOnly: false,
theme: "vs-dark",
});
// how do I do this?
editor.insertText("FOO");
var line = editor.getPosition();
var range = new monaco.Range(line.lineNumber, 1, line.lineNumber, 1);
var id = { major: 1, minor: 1 };
var text = "FOO";
var op = {identifier: id, range: range, text: text, forceMoveMarkers: true};
editor.executeEdits("my-source", [op]);
一个更稳健的解决方案是使用 Selection API 而不是 Position
var selection = editor.getSelection();
var id = { major: 1, minor: 1 };
var text = "XXX";
var op = {identifier: id, range: selection, text: text, forceMoveMarkers: true};
editor.executeEdits("my-source", [op]);
如果编辑器中已经有预选文本,插入将替换它,我认为这是正确的行为。
要在光标处插入文字,有这个很简单的方法。
我经常用它来制作代码片段工具栏:
editor.trigger('keyboard', 'type', {text: "test"});
如果选择文本,它将替换文本。
您还可以通过这种方式添加多行文本:
editor.trigger('keyboard', 'type', {text: `text on
multiple
line`});
我的应用程序中嵌入了一个 monaco 代码编辑器。
如何以编程方式在特定行插入文本?
var editor = monaco.editor.create(document.getElementById("container"), {
value: "// First line\nfunction hello() {\n\talert('Hello world!');\n}\n// Last line",
language: "javascript",
lineNumbers: false,
roundedSelection: false,
scrollBeyondLastLine: false,
readOnly: false,
theme: "vs-dark",
});
// how do I do this?
editor.insertText("FOO");
var line = editor.getPosition();
var range = new monaco.Range(line.lineNumber, 1, line.lineNumber, 1);
var id = { major: 1, minor: 1 };
var text = "FOO";
var op = {identifier: id, range: range, text: text, forceMoveMarkers: true};
editor.executeEdits("my-source", [op]);
一个更稳健的解决方案是使用 Selection API 而不是 Position
var selection = editor.getSelection();
var id = { major: 1, minor: 1 };
var text = "XXX";
var op = {identifier: id, range: selection, text: text, forceMoveMarkers: true};
editor.executeEdits("my-source", [op]);
如果编辑器中已经有预选文本,插入将替换它,我认为这是正确的行为。
要在光标处插入文字,有这个很简单的方法。 我经常用它来制作代码片段工具栏:
editor.trigger('keyboard', 'type', {text: "test"});
如果选择文本,它将替换文本。
您还可以通过这种方式添加多行文本:
editor.trigger('keyboard', 'type', {text: `text on
multiple
line`});