如何在 Codemirror 编辑器中设置光标位置

Posted

技术标签:

【中文标题】如何在 Codemirror 编辑器中设置光标位置【英文标题】:How to set cursor position in Codemirror editor 【发布时间】:2016-01-28 10:49:28 【问题描述】:

我正在使用 codemirror 实现 “查找并纠正” 功能。我知道有一个 搜索和替换 插件,但它不能满足我的要求。编辑器用于编写特定查询。它在

中创建跨度

<pre> <span class="cm-field">field</span>:jet <span class="cm-other-operator active" >adj3</span> engine <span class="cm-operator">OR</span> jet <span class="cm-other-operator" >near5</span> engine </pre>

请参考快照。 如果我单击任何运算符(橙色),光标开始在那里闪烁并且功能正在运行。单击 find next 按钮时,我能够找到相应的跨度,但无法在此处设置光标。那么我如何在那里设置光标位置。提前致谢。

【问题讨论】:

您可以使用 doc.setCursor(pos: line, ch) 将光标设置到任何特定位置。 【参考方案1】:

在设置光标位置之前,您必须将注意力集中在编辑器上。

editor.focus()

那么就像@djadmin说你会使用doc.setCursor(pos: line, ch)来设置光标位置。

editor.setCursor(line: 1, ch: 5)

这是一个 JSFiddle,您可以使用它来执行此操作:https://jsfiddle.net/stpmu61y/

【讨论】:

能否指定 line 和 ch(列)是 0 索引还是 1 索引?【参考方案2】:

如果您的光标已安装,但仅在行首:0,符号:0,这意味着仅触发焦点,因为 setValue 是延迟的,请将您的 SetCursor 包装在 SetTimeOut 中,延迟为 0 并享受 =)

      

       codeEditor.setValue (code);

       setTimeout (() => 
           codeEditor.focus();
           codeEditor.setCursor(
             line: 3,
             ch: 10,
           );
       , 0);

【讨论】:

以上是关于如何在 Codemirror 编辑器中设置光标位置的主要内容,如果未能解决你的问题,请参考以下文章

如何在 QML 中设置鼠标光标位置

如何在 C# 中的控制台应用程序中设置鼠标光标的位置?

jQuery在文本区域中设置光标位置

如何使用 Javascript 设置 CodeMirror 编辑器的值?

在 Win32 控制台应用程序中设置光标位置

在文本小部件中设置光标位置