作者:Albert.Wen 添加时间:2022-10-05 00:34:16 修改时间:2023-04-27 09:49:52 分类:HTML/CSS/JS 编辑
ACE Editor 是一个开源的、独立的、基于浏览器的代码编辑器,可以嵌入到任何 web 页面或 JavaScript 应用程序中。ACE 支持超过 110 种语言语法高亮,并能够处理代码多达 400 万行的大型文档。ACE 开发团队称,ACE 在性能和功能上可以媲美本地代码编辑器(如 Sublime Text、TextMate 和 Vim 等)
1、拷贝所需的JS文件
我是把源码目录 src-min-noconflict
中的文件,拷贝到项目目录中,如:/static/ace-editor/js
2、引用JS文件
在一般情况下,我们需要引入的js库是两个:ace.js
,ext-language_tools.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
<!DOCTYPE html> < html > < head > < title >Demo of ACE Editor</ title > <!--导入js库--> < script src = "/static/ace-editor/js/ace.js" type = "text/javascript" charset = "utf-8" ></ script > < script src = "/static/ace-editor/js/ext-language_tools.js" type = "text/javascript" charset = "utf-8" ></ script > </ head > < body > <!--【特别注意】代码输入框,务必设置高度,否则无法显示 --> <!--【特别注意】pre标签和textarea标签之间不要有空格或换行,这些元素都会当着编辑器内容的一部分,造成出现“开头多出一些空格字符”的怪现象!!!--> < pre id = "code" class = "ace_editor" style = "min-height:400px" >< textarea class = "ace_text-input" > #include < cstdio > int main(){ int n,m; scanf("%d %d",&n,&m); printf("%d",n+m); return 0; } </ textarea ></ pre > < script > //初始化对象 editor = ace.edit("code"); //设置风格和语言(更多风格和语言,请到github上相应目录查看) theme = "clouds" language = "c_cpp" editor.setTheme("ace/theme/" + theme); editor.session.setMode("ace/mode/" + language); //字体大小 editor.setFontSize(18); //设置只读(true时只读,用于展示代码) editor.setReadOnly(false); //自动换行,设置为off关闭 editor.setOption("wrap", "free") //启用提示菜单 ace.require("ace/ext/language_tools"); editor.setOptions({ enableBasicAutocompletion: true, enableSnippets: true, enableLiveAutocompletion: true }); </ script > </ body > </ html > |
效果图(纯本机测试,Notepad++ + Firefox):
3、基本用法
去除中间的竖线:
1
|
editor.renderer.setShowGutter( false ); |
去除行号:
1
|
editor.setShowPrintMargin( false ); |
设置并获取内容:
1
2
3
|
editor.setValue( "the new text here" ); editor.session.setValue( "the new text here" ); // set value and reset undo history editor.getValue(); // or session.getValue |
设置主题:
1
|
editor.setTheme( "ace/theme/xcode" ); |
设置语言模式:
1
|
editor.session.setMode( "ace/mode/sql" ); |
启用提示菜单:
1
2
3
4
5
6
7
|
ace.require( "ace/ext/language_tools" ); editor.setOptions({ enableBasicAutocompletion: true , enableSnippets: true , enableLiveAutocompletion: true }); |
撤销:
1
|
editor.undo(); |
重做回退:
1
|
editor.redo(); |
光标跳转到指定行:
1
|
editor.gotoLine(); |
查找替换:
1
|
editor.execCommand( 'replace' ); |
自动换行:
1
|
editor.setOption( "wrap" , "free" ); //关闭时free换成off |
参考:
工作项目中的一次应用
模板文件:aceEditor.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
< textarea id = "hid_${inputId!}" name = "${inputName!}" class = "hidden" >${defaultValue!}</ textarea > <!--【特别注意】代码输入框,务必设置高度,否则无法显示 --> <!--【特别注意】pre标签和textarea标签之间不要有空格或换行,这些元素都会当着编辑器内容的一部分,造成出现“开头多出一些空格字符”的怪现象!!!--> < pre id = "${inputId!}" class = "ace_editor ${cssClass!}" style = "min-height:${height!}" >< textarea class = "ace_text-input" >${defaultValue!}</ textarea ></ pre > < script > $(function() { // ACE-Editor代码编辑器 ace.require("ace/ext/language_tools"); let ${inputId!} = ace.edit("${inputId!}"); ${inputId!}.setTheme("ace/theme/${theme!}"); ${inputId!}.session.setMode("ace/mode/${language}"); ${inputId!}.setOptions({ enableBasicAutocompletion : true, enableSnippets : true, enableLiveAutocompletion : true }); // 通过change事件,捕获编辑器的最新内容 ${inputId!}.getSession().on('change', function(e) { $('#hid_${inputId!}').val(${inputId!}.getValue()); }); }); </ script > |