摩纳哥编辑器:更新插入文本上的光标位置

Osc*_*sgc 6 javascript typescript monaco-editor

我使用编辑器外部的按钮(即“hello world”)向摩纳哥编辑器添加一些文本,然后尝试将光标位置设置到下一行。

我尝试使用编辑器中的“setPosition({column:x, lineNumber:y})”函数,但它不起作用。

这就是我的实现方式:

insertInPosition(textToInsert:string, cursorPosition:any){
    this.editorInstance.setPosition(cursorPosition);
    var allInstructions = this.instructionSet.split("\n")
    allInstructions.splice(cursorPosition.lineNumber - 1, 0, textToInsert);
    allInstructions.splice(cursorPosition.lineNumber, 1);
    allInstructions = allInstructions.join("\n");
    this.editorInstance.setPosition(cursorPosition);
}
Run Code Online (Sandbox Code Playgroud)

我希望看到光标位于由cursorPosition 定义的行和列中,但实际上我看到光标指向第1 行和第1 列(在编辑器的顶部)。

我也尝试editor.setPosition()onDidChangeModelContent()方法中使用相同的 api,但它不起作用。当我在控制台中打印时,editor.getPosition()我收到了正确的位置。

知道可能出什么问题吗?

小智 3

this.editor?.trigger('keyboard', 'type', {text: 'value'});
this.editor?.focus();
const position: any  = this.editor?.getPosition();
this.editor?.setPosition(position);
Run Code Online (Sandbox Code Playgroud)

  • 请对您的代码提供一些解释。 (5认同)