markdown编辑器editormd获取光标位置,获取行号,获取总行号,获取光标处内容,相关计算等 电脑版发表于:2021/1/21 12:05 #### 获取光标位置,获取行号位置 ``` let markdownCursorLine = markdownEditor.getCursor().line + 1; ``` #### 获取总行号 ``` let allCount = markdownEditor.cm.lineCount(); ``` #### 设置光标位置 ``` testEditormd.setCursor({line:1, ch:2}); ``` #### 设置选中文本 ``` testEditormd.setSelection({line:1, ch:0}, {line:5, ch:100}); ``` #### 获取选中文本 ``` testEditormd.getSelection() ``` #### 获取光标处文本 貌似并没有直接获取光标处文本的方法,可以使用setSelection,getSelection配合起来实现。哈哈真是个可爱的小机灵 ``` testEditormd.getSelection() ``` ### 如何计算当前光标位置下方是否全是空行 使用setSelection,getSelection从光标行到末尾行,这样去逐行扫描就行了哇。扫描完后在让光标回到最初的位置就行了撒,哇哦nice。嘿嘿,思维要灵活点! ``` for (var i = markdownCursorLine; i < allCount; i++) { //bala bala bala } ``` 其实还有更好的方法,直接选中从当前光标位置,到结束点的光标,在统一获取即可,不用逐行扫描。 ``` //获取光标位置 let getCursorResult = markdownEditor.getCursor(); let markdownCursorLine = getCursorResult.line + 1; //获取总行号 let allCount = markdownEditor.cm.lineCount(); //先选中从当前光标位置,到结束点的光标,在统一获取即可 markdownEditor.setSelection({ line: markdownCursorLine, ch: 0 }, { line: allCount, ch: 0 }); //获取选中文本 let getSelectionContent = markdownEditor.getSelection(); console.log("获取内容"); console.log(getSelectionContent); if (!!getSelectionContent) { console.log("有内容"); } //获取完后让光标回到最初的位置 markdownEditor.setCursor(getCursorResult); ``` ### 反向解压源码,查看源码,分析源码,修改源码其实可以增加很多自定义功能与一些平时很少看到的代码 **比如像getValue方法的原理。** ![](https://img.tnblog.net/arcimg/aojiancc2/313f0e776b49495eaddc725294f40daa.png) 这个方法是获取所有内容的,获取从第一行到最后一行的内容,说明getLines可以获取一个范围的内容,但是好像没有暴露出来,如果我们想外部使用我们只需要在封装一个即可。 当然还有其他更多方法的内部原理和查找方式这里就不行了。比如根据行号获取内容的方法我们查看源码很容易发现就是markdownEditor.cm.getLine