獲取一行的內容其實很簡單:IModel.getLineContent()
line = model.getLineContent(3);
注意,行號使用getLineContent()
時從1開始。
更換文字更復雜一點,但你可以申請編輯操作:
applyEdits
不會將編輯添加到撤消堆棧,因此不鼓勵。然而所有這三個使用相同的接口的實際變化:IIdentifiedSingleEditOperation
所以實際調用不會有很大的不同,所以我就用pushEditOperations()
表現出來:
model.pushEditOperations(
[],
[
{
forceMoveMarkers: true,
identifier: "mychange",
range: {
startLineNumber: lineNo,
endLineNumber: lineNo,
startColumn: 1,
endColumn: line.length + 1,
},
text: "this will be the new text there"
},
],
[]
);
如果你想測試出來的摩納哥操場我用這個代碼(改編自「添加操作」爲例):
var editor = monaco.editor.create(document.getElementById("container"), {
value: [
'',
'class Example {',
'\tprivate m:number;',
'',
'\tpublic met(): string {',
'\t\treturn "Hello world!";',
'\t}',
'}'
].join('\n'),
language: "typescript"
});
var model = editor.getModel();
editor.addAction({
id: 'my-unique-id',
label: 'Replace the second line',
keybindings: [ monaco.KeyMod.CtrlCmd | monaco.KeyCode.F10 ],
contextMenuGroupId: 'custom',
contextMenuOrder: 1,
run: function(ed) {
var lineNo = 3;
var line = model.getLineContent(lineNo);
console.log("These were the contents of the second line before I replaced them:", line);
model.pushEditOperations(
[],
[
{
forceMoveMarkers: true,
identifier: "mychange",
range: {
startLineNumber: lineNo,
endLineNumber: lineNo,
startColumn: 1,
endColumn: line.length + 1,
},
text: "this will be the new text there"
},
],
[]
);
}
});
在這種情況下,你可以運行由動作:
- 按的Ct rl + F10
- 右鍵單擊編輯器並選擇「替換第二行」(至少如果沒有隱藏編輯器上下文菜單)。
謝謝我一定會試一試,接受一次我測試一下。 – Jesse
只是一個側面的問題是有沒有辦法使用您自己的事件觸發摩納哥編輯器的命令,或者使用JavaScript重寫默認鍵盤快捷方式? – Jesse
是否要在摩納哥綁定鍵盤快捷鍵以進行此檢查[that](https://microsoft.github.io/monaco-editor/playground.html#interacting-with-the-editor-listening-to-key-events ) –