如何在 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 编辑器中设置光标位置的主要内容,如果未能解决你的问题,请参考以下文章