在Ace Editor中设置光标的位置

问题描述 投票:-1回答:4

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

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

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

知道怎么做到这一点?

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

ace-editor ui-ace
4个回答
1
投票

你需要在之后添加这行editor.moveCursorLineEnd()

session.insert(cursorPosition, textToAdd)

看看这个fiddle


0
投票

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


0
投票

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

editor.gotoLine(row, column); 

0
投票

这是你的答案:

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

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.