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

时间:2015-09-17 03:23:37

标签: javascript plugins codemirror adobe-brackets

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

我尝试做的例子: 用户点击编辑器内的某处,触发cursorActivity(游标或编辑器已更改)事件,我捕获事件并测试前6个字符是否与字符串'color:'匹配如果是,那么做点什么。

除了捕获每次键入字符或字符串时触发的readInput事件外,我似乎无法找到任何直接从编辑器中读取的方法。粘贴。这适用于某一点,但是当用户通过鼠标单击移动光标时会失败。

TL; DR 如何检测光标何时在特定字符串后立即移动?

1 个答案:

答案 0 :(得分:6)

好的,终于找到了解决方案。您可以使用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>