在Ace Editor中设置光标的位置

时间:2018-01-23 06:25:34

标签: ace-editor ui-ace

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

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

renderer.scrollCursorIntoView({
    row: cursorPosition.row,
    column: cursorPosition.column + param.length
}, 0.5)

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

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

4 个答案:

答案 0 :(得分:1)

您需要在

之后添加此行editor.moveCursorLineEnd()
session.insert(cursorPosition, textToAdd)

查看此fiddle

答案 1 :(得分:0)

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

答案 2 :(得分:0)

当用户插入文本时,您可以使用goToLine(),它将行和列作为参数,并将光标设置在该位置。

editor.gotoLine(row, column); 

答案 3 :(得分:0)

这是你的答案:

ace.edit('editor').moveCursorTo(lineNumber,colNumber);

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

刚刚测试过,它的工作原理与预期一致! 它甚至会自动将光标滚动到视图中,尽管控制台警告在将来的版本中这种行为会发生变化。

  

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

希望这可以解决您的问题。