在线代码编辑器CodeMirror
支持几十种编程语言的在线编辑,支持所有主流的浏览器。支持自动完成、代码折叠、HTML预览、全屏、代码格式化、Mustache模板高亮等。
http://codemirror.net/
https://zhuanlan.zhihu.com/p/22163474
http://blog.csdn.net/cuixiping/article/details/6278645
http://www.hyjiacan.com/category/trans/codemirror-doc/
我的CodeMirror配置:
<link rel="stylesheet" href="/static/codemirror-5.29/lib/codemirror.css">
<link rel="stylesheet" href="/static/codemirror-5.29/addon/display/fullscreen.css">
<script src="/static/codemirror-5.29/lib/codemirror.js"></script>
<script src="/static/codemirror-5.29/addon/edit/matchbrackets.js"></script>
<script src="/static/codemirror-5.29/addon/selection/active-line.js"></script>
<script src="/static/codemirror-5.29/addon/display/fullscreen.js"></script>
<script src="/static/codemirror-5.29/mode/htmlmixed/htmlmixed.js"></script>
<script src="/static/codemirror-5.29/mode/xml/xml.js"></script>
<script src="/static/codemirror-5.29/mode/javascript/javascript.js"></script>
<script src="/static/codemirror-5.29/mode/css/css.js"></script>
<script src="/static/codemirror-5.29/mode/clike/clike.js"></script>
<script src="/static/codemirror-5.29/mode/php/php.js"></script>
<style>.CodeMirror{height:500px;border:1px solid #999;}</style>
<script>
var CM_editor=CodeMirror.fromTextArea($("textarea[name='content']")[0],{
styleActiveLine:true,
flattenSpans:false, //禁止合并span(值为true时未发现到底哪种情况会合并)
autofocus:true, //自动获取焦点
lineNumbers: true, //显示行号
matchBrackets: true, //括号匹配
mode: "application/x-httpd-php",
indentUnit: 4, //tab宽度
indentWithTabs: true, //tab缩进
//theme:"default", //主题
lineWrapping:true, //代码自动换行
extraKeys: { //全屏
"F11": function(cm){cm.setOption("fullScreen", !cm.getOption("fullScreen"));},
"Esc": function(cm){if (cm.getOption("fullScreen")) cm.setOption("fullScreen", false);}
}
});
//全屏
$('.js-btn-fullscreen').click(function(){
CM_editor.setOption("fullScreen", !CM_editor.getOption("fullScreen"));
CM_editor.focus();
});
//加载主题
$('select.js-theme').change(function(){
var theme=$(this).val();
if(!theme)return;
if(theme!='default')$('<link rel="stylesheet" href="/static/codemirror-5.29/theme/'+theme+'.css">').appendTo('head');
CM_editor.setOption('theme', theme);
});
//自动换行
$('.js-lineWrapping').click(function(){
CM_editor.setOption('lineWrapping', $(this).prop('checked'));
});
</script>
