2017-01-13 35 views
4

我有一個嵌入我的應用程序的摩納哥代碼編輯器。如何將文本插入到摩納哥編輯器中?

如何以編程方式在特定行上插入文本?

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"); 

回答

5

使用executeEdits API

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]); 
+0

[一些額外的上下文](https://github.com/Microsoft/monaco-editor/issues/192) – chris

0

一個更強大的解決方案是使用Selection API而不是位置

var selection = editor.getSelection(); 
var range = new monaco.Range(selection.startLineNumber, selection.startColumn, selection.endLineNumber, selection.endColumn); 
var id = { major: 1, minor: 1 };    
var text = "XXX"; 
var op = {identifier: id, range: range, text: text, forceMoveMarkers: true}; 
editor.executeEdits("my-source", [op]); 

如果已經有在編輯器中預先選定的文本,插入將取代它,這在我看來是正確的行爲。

相關問題