Ace Editor如何获取选中行?附可行实现代码
获取Ace Editor选中内容的首尾行号
如果你已经能通过editor.getSelectedText()拿到选中的文本,但需要对应行号的话,Ace Editor的selection API其实已经帮我们准备好了相关方法,不用自己去计算~
直接通过选区对象就能拿到起始和结束行:
// 获取所有选中的范围(单选区时取第一个元素即可) var editorLines = editor.selection.getAllRanges(); // Ace的行号默认从0开始,加1转换成常用的1起始行号 var rowStart = editorLines[0].start.row + 1; var rowEnd = editorLines[0].end.row + 1; // 最终就能得到你想要的类似 {rowStart: 5, rowEnd: 12} 的结果 console.log(`rowStart: ${rowStart}, rowEnd: ${rowEnd}`);
补充说明
getAllRanges()会返回当前编辑器中所有的选中范围数组,如果你是多选区场景,可以遍历这个数组来获取每个选区的行号;- 如果你确定只有一个选区,直接取
editorLines[0]就可以; - 代码里加1是因为Ace Editor内部的行索引是从0开始计数的,而我们日常使用习惯从1开始,如果你需要原生的0起始行号,去掉
+1就行。
内容的提问来源于stack exchange,提问作者Pie
相关产品推荐
相关产品推荐

