在 Ace Editor 中设置光标位置

Ash*_*ora 6 ace-editor ui-ace

我有一个用例,用户单击按钮在当前光标位置插入文本。但使用 插入文本后session.insert(cursorPosition, textToAdd),光标位置会移动到第一个字符。

我尝试使用以下方法将光标放置在最近添加的文本之后,但它不起作用。

renderer.scrollCursorIntoView({
    row: cursorPosition.row,
    column: cursorPosition.column + param.length
}, 0.5)
Run Code Online (Sandbox Code Playgroud)

知道如何实现这一目标吗?

基本上,如果用户不断单击该按钮,则应在当前光标位置添加文本,然后在最近添加的文本之后添加文本,除非用户将光标明确放置在其他位置。

Kic*_*ass 5

这是你的答案:

ace.edit('editor').moveCursorTo(lineNumber,colNumber);
Run Code Online (Sandbox Code Playgroud)

https://jsfiddle.net/q27ebeeq/130/

刚刚测试,它完全按照预期工作!它甚至自动将光标滚动到视图中,尽管控制台警告这种行为将在未来版本中改变。

选择更改后自动将光标滚动到视图中,这将在下一个版本集编辑器中禁用。$blockScrolling = Infinity 禁用此消息

希望这能解决您的问题。


a u*_*ser 0

editor.selection.moveTo(row, column),但插入后不需要使用。移动到文档开头的选择表明代码中的某些内容正在编辑器上调用 setValue。(例如,它可能是一个有错误的反应组件重新创建编辑器)但如果没有看到有错误的页面,很难确定这一点