你的位置:首页 > 软件开发 > Java > 在线代码编辑器CodeMirror简介

在线代码编辑器CodeMirror简介

发布时间:2016-08-27 00:00:12
1.什么是Code Mirror最近做一个项目需要在网页上实现一个代码编辑器,支持语法高亮、自动缩进、智能提示等功能。发现Code Mirror刚好满足所有需求。Code Mirror是由js写的一款插件,其功能非常强大,用来实现网页端代码编辑器非常方便。如果想看效果图,可移步到 ...

1.什么是Code Mirror

最近做一个项目需要在网页上实现一个代码编辑器,支持语法高亮、自动缩进、智能提示等功能。发现Code Mirror刚好满足所有需求。Code Mirror是由js写的一款插件,其功能非常强大,用来实现网页端代码编辑器非常方便。如果想看效果图,可移步到这里----CodeOnline,这是我做的一个小项目,其中代码编辑器的就是用Code Mirror实现的。

2.使用Code Mirror

下面我将演示如何使用Code Mirror搭建一个简易的代码编辑器,并对其常用配置简要介绍。

首先要到Code Mirror官网下载此插件,然后在网页中引入即可。如下代码即实现了一个可以高亮显示Java代码的编辑器:

 1 <!-- 2 最简单的CodeMirror编辑器 3 --> 4  5 <!DOCTYPE 6 html> 7  8 <html> 9 10 <!--下面两个是使用Code Mirror必须引入的-->11 <link rel="stylesheet" href="codemirror-5.12/lib/codemirror.css">12 <script src='/images/loading.gif' data-original="codemirror-5.12/lib/codemirror.js"></script>13 14 <!--Java代码高亮必须引入-->15 <script src='/images/loading.gif' data-original="codemirror-5.12/clike.js"></script>16 17 <head>18 <title>CodeMirrorTest</title>19 </head>20 <body>21 <textarea id="code"></textarea>22 </body>23 <script type="text/javascript">24 //根据DOM元素的id构造出一个编辑器25   var editor=CodeMirror.fromTextArea(document.getElementById("code"),{26         mode:"text/x-java" //实现Java代码高亮27     });28 </script>29 </html>

如要显示行号,只需在构造editor时加上

lineNumbers:true

var editor=CodeMirror.fromTextArea(document.getElementById("code"),{        mode:"text/x-java", //实现Java代码高亮        lineNumbers:true    });

而后在构造editor时加入参数

theme:"seti"

完整代码如下:

 1 <!DOCTYPE html> 2 <html> 3 <link rel="stylesheet" href="codemirror-5.12/lib/codemirror.css"> 4 <script src='/images/loading.gif' data-original="codemirror-5.12/lib/codemirror.js"></script> 5 <script src='/images/loading.gif' data-original="codemirror-5.12/clike.js"></script> 6  7 <!--引入css文件,用以支持主题--> 8 <link rel="stylesheet" href="codemirror-5.12/theme/seti.css"> 9 <head>10 <title>CodeMirror Test</title>11 </head>12 <body>13 <textarea id="code"></textarea>14 </body>15 <script type="text/javascript">16   var editor=CodeMirror.fromTextArea(document.getElementById("code"),{17     mode:"text/x-java",18     lineNumbers:true,19     theme:"seti"20   });21 </script>22 </html>

最后各种其他功能的实现方法与之类似,稍微注意的是需要引入的文件不同,我将实现各个功能所需的文件均写在了如下代码中:

 1 <!DOCTYPE html> 2 <html> 3 <link rel="stylesheet" href="codemirror-5.12/lib/codemirror.css"> 4 <script src='/images/loading.gif' data-original="codemirror-5.12/lib/codemirror.js"></script> 5 <script src='/images/loading.gif' data-original="codemirror-5.12/clike.js"></script> 6  7 <!--引入css文件,用以支持主题--> 8 <link rel="stylesheet" href="codemirror-5.12/theme/eclipse.css"> 9 <link rel="stylesheet" href="codemirror-5.12/theme/seti.css">10 <link rel="stylesheet" href="codemirror-5.12/theme/dracula.css">11 12 <!--引入js,绑定Vim-->13 <link rel="stylesheet" href="codemirror-5.12/addon/dialog/dialog.css">14 <script src='/images/loading.gif' data-original="codemirror-5.12/keymap/vim.js"></script>15 <script src='/images/loading.gif' data-original="codemirror-5.12/addon/search/searchcursor.js"></script>16 <!--改善vim输入命令时的样式-->17 <script src='/images/loading.gif' data-original="codemirror-5.12/addon/dialog/dialog.js"></script>18 19 <!--支持代码折叠-->20 <link rel="stylesheet" href="codemirror-5.12/addon/fold/foldgutter.css"/>21 <script src='/images/loading.gif' data-original="codemirror-5.12/addon/fold/foldcode.js"></script>22 <script src='/images/loading.gif' data-original="codemirror-5.12/addon/fold/foldgutter.js"></script>23 <script src='/images/loading.gif' data-original="codemirror-5.12/addon/fold/brace-fold.js"></script>24 <script src='/images/loading.gif' data-original="codemirror-5.12/addon/fold/comment-fold.js"></script>25 26 <!--全屏模式-->27 <link rel="stylesheet" href="codemirror-5.12/addon/display/fullscreen.css">28 <script src='/images/loading.gif' data-original="codemirror-5.12/addon/display/fullscreen.js"></script>29 30 <!--括号匹配-->31 <script src='/images/loading.gif' data-original="codemirror-5.12/addon/edit/matchbrackets.js"></script>32 33 <!--自动补全-->34 <link rel="stylesheet" href="codemirror-5.12/addon/hint/show-hint.css">35 <script src='/images/loading.gif' data-original="codemirror-5.12/addon/hint/show-hint.js"></script>36 <script src='/images/loading.gif' data-original="codemirror-5.12/addon/hint/anyword-hint.js"></script>37 38 <head>39 <title>CodeMirror Test</title>40 </head>41 42 <body>43 <textarea id="code"></textarea>44 </body>45 <script type="text/javascript">46   var editor=CodeMirror.fromTextArea(document.getElementById("code"),{47     //Java高亮显示48      mode:"text/x-java",49 50     //显示行号51      lineNumbers:true,52 53     //设置主题54      theme:"seti",55 56     //绑定Vim57      keyMap:"vim",58 59     //代码折叠60      lineWrapping:true,61      foldGutter: true,62      gutters:["CodeMirror-linenumbers", "CodeMirror-foldgutter"],63 64     //全屏模式65      fullScreen:true,66 67      //括号匹配68      matchBrackets:true,69 70      智能提示 71      extraKeys:{"Ctrl-Space":"autocomplete"}//ctrl-space唤起智能提示72 });73 </script>74 </html>

其他说明:

  1. 在构造editor时相关的属性大多数都可以动态的指定。如设置显示行号可以不在构造editor时指出,只需构造出editor之后,调用
    editor.setOption("lineNumbers",true)
    即可,更改主题也类似的用
    editor.setOption("theme","seti")
    即可,非常方便。
  2. 可以用
    editor.getOption("属性名")
    来获取editor某属性的值,在本例中
    editor.getOption("theme")
    将返回"seti"
  3. 无法用js的DOM操作获取编辑器中的值,但可以用
    editor.getValeu()
    获得其中的值,
    editor.setValue("value")
    来设置其中的值
  4. 可以自定义编辑器的大小,只需设置如下样式即可:

     

    海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

    原标题:在线代码编辑器CodeMirror简介

    关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录