程序员让前端飞Web前端之路

代码编辑器CodeMirror(插件类)

2017-11-29  本文已影响351人  枫之伊信

项目需要在网页上实现一个代码编辑器,支持语法高亮、自动缩进、智能提示等功能。发现CodeMirror刚好满足所有需求。

插件 CodeMirror 效果

插件 CodeMirror 效果

基础常用:

<!--下面两个是使用Code Mirror必须引入的-->
<link rel="stylesheet" href="codemirror-5.12/lib/codemirror.css">
<script src="codemirror-5.12/lib/codemirror.js"></script>

<!--Java代码高亮必须引入-->
<script src="codemirror-5.12/clike.js"></script>

<textarea id="code"></textarea>
<script type="text/javascript">
//根据DOM元素的id构造出一个编辑器
var editor=CodeMirror.fromTextArea(document.getElementById("code"),{
          mode:"text/x-java" //实现Java代码高亮
          indentWithTabs: true,
          smartIndent: true,  //自动缩进
           lineNumbers:true,  // 显示行号
           matchBrackets : true,  //括号匹配
           readOnly : true,  //只读
           lineWiseCopyCut: true,
});
</script>

配置说明:

1、以什么格式进行高亮
mode: "text/x-sql",

2、主题
theme: 'seti',

3、是否代码折叠
lineWrapping: true,

4、是否在编辑器左侧显示行号
lineNumbers: true,

5、行号从哪个数开始计数,默认为1
firstLineNumber: 1,

6、tab字符的宽度,默认为4
indentWithTabs: true,
indentWithTabs: true 在缩进时,是否需要把 n*tab宽度个空格替换成n个tab字符

7、自动缩进,设置是否根据上下文自动缩进,默认为true
smartIndent: true,
设置是否根据上下文自动缩进(和上一行相同的缩进量)。默认为true。

8、括号匹配
matchBrackets : true,

9、是否在初始化时自动获取焦点
autofocus: true,

10、智能提示
extraKeys: {"Ctrl-Space": "autocomplete"},

11、编辑器是否只读,并且不能获得焦点
readOnly:'nocursor',

12、在选择时是否显示光标,默认为false
showCursorWhenSelecting:true

13、lineWiseCopyCut: true,
启用时,如果在复制或剪切时没有选择文本,那么就会自动操作光标所在的整行。

14、lineWrapping:true,   换行(常用)

15、文本设置
getValue():获取编辑器文本
setValue(textString):设置编辑器文本

代码方式显示:
http://codemirror.net/mode/

遇到问题:

如果出现了多个codeMirror相互影响的问题,需要在最后对codeMirror进行异步刷新处理即可,也就是代码段:

var tmp = function() {
    editor.refresh();  }
    setTimeout(tmp, 50);

资料地址:
https://github.com/codemirror/codemirror
http://codemirror.net/demo/resize.html
相应配置 :https://zhuanlan.zhihu.com/p/22163474

上一篇下一篇

猜你喜欢

热点阅读