简单描述下使用场景,应用须要提供一个简单的SQL查询窗口,可以高亮显示SQL语法便可。css
到codemirror官网上下载下来一套代码,将lib下的codemirror.js、codemirror.css
文件和mode/sql文件夹下的sql.js
文件导入到页面中。lib是codemirror的lib,mode是当前使用的语言模式,即SQL语言,mode中的js包内容大多为当前语言的关键字或格式解析等相关代码。mysql
下面的代码展现了如何初始化一个codemirror,以及相关参数配置释义。sql
<!-- Create a simple CodeMirror instance --> <link rel="stylesheet" href="lib/codemirror.css"> <script src="lib/codemirror.js"></script> <script src="mode/sql/sql.js"></script> <script> var editor = CodeMirror.fromTextArea(myTextarea, { lineNumbers: true,//设置行号 boolean value: 'SELECT * FROM table',//编辑框初始值 string mode: 'text/x-mysql',//当前code模式 模式的选择能够在CodeMirror.modes中查看 height: 128,//高度 indentUnit: 4,//缩进块用多少个空格表示 默认是2 autofocus: true, extraKeys: {//快捷键 可提供三种模式 sublime、emacs、vim。 使用时须要引入js支持包 "F9": function (editor) { format(editor); }, "F8": function (editor) { query(editor); } } }); var sql='SELECT * FROM table'; editor.setValue(sql); editor.setCursor(sql.length); editor.getValue(); </script>
至此,写SQL语句时就用上codemirror插件了。一样的想要其余语言的支持,只须要配置上不一样的语言模式包就能够了。vim
在写SQL时候想要实现相似idea自动提示提升效率的功能,codemirror的autocomplete插件可以帮到你们。首先须要导入自动提示的依赖包:show-hint.js、show-hint.css
以及SQL提示的依赖包:sql-hint.js
. 依赖包导入后还差一项配置就能够了。须要配置在什么样的时机触发自动提示。数组
editor.on("change", function(editor, change) {//任意键触发autocomplete if (change.origin == "+input"){ var text = change.text; if(!ignoreToken(text))//不提示 setTimeout(function() { editor.execCommand("autocomplete"); }, 20); } });
从上面的代码中能够看到是在editor发生输入变化的时候执行了自动提示的命令。读者能够使用其余方法或时机触发提示。 在实践过程当中发现并非全部的按键都须要提示,ignoreToken(string token)
方法即解决这个问题,方法内为数组对象,返回true/false
表明是否须要自动提示。 SQL语句中属于动态数据的部分就是表和列数据了,可以提示这些信息会给用户输入代码极大的便捷,codemirror的hint功能支持该特性。使用hintOptions 属性
定义tables和列相关内容便可。ide
hintOptions:{ tables: { table1: ['name', 'score', 'birthDate'], table2: ['name', 'population', 'size'] } }
至此,SQL的关键字高亮、关键字提示、表、列提示都ok了。效果以下,该图中的icon等其余效果后面分享。 idea