CodeMirror:如何在光标位置之前或之后读取编辑器文本

CodeMirror: How to read editor text before or after cursor position

本文关键字:或之后 读取 编辑器 文本 位置 光标 CodeMirror      更新时间:2023-09-26

我试图找到一种方法来测试光标之前是否有一个特定的字符串,然后触发事件。

我想做的例子: 用户单击编辑器内的某个地方,触发cursorActivity(光标或编辑器更改)事件,我捕获该事件并测试前6个字符是否与字符串'color:'匹配,如果是这样,那么我做一些事情。

我似乎找不到任何一种方法,让你实际上直接从编辑器中读取,除了捕捉readInput事件,每次输入字符或粘贴字符串时触发。这在一定程度上是有效的,但是当用户用鼠标点击移动光标时就失效了。

TL,博士如何检测光标在特定字符串之后立即移动到某个地方?

Ok终于找到解决办法了。您可以使用editor.doc检索实际文档,它允许您获得游标行&字符位置。然后,可以使用editor.doc.getLine(n)检索所需的行,并比较子字符串

下面是我的测试用例:

<!-- Create a simple CodeMirror instance -->
<link rel="stylesheet" href="lib/codemirror.css">
<script src="lib/codemirror.js"></script>
<textarea id="myTextarea"></textarea>
<script>
  var editor = CodeMirror.fromTextArea(myTextarea, {
    lineNumbers: true
  });
  //Catch cursor change event
  editor.on('cursorActivity',function(e){
    var line = e.doc.getCursor().line,   //Cursor line
        ch = e.doc.getCursor().ch,       //Cursor character
        stringToMatch = "color:",
        n = stringToMatch.length,
        stringToTest = e.doc.getLine(line).substr(Math.max(ch - n,0),n);
    if (stringToTest == stringToMatch) console.log("SUCCESS!!!");
  });
</script>