首页 > 其他分享 >ACE Editor(代码编辑器) 入门教程

ACE Editor(代码编辑器) 入门教程

时间:2023-04-27 10:33:46浏览次数:41  
标签:ACE ace 入门教程 编辑器 inputId Editor true editor

ACE Editor(代码编辑器) 入门教程 作者: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.jsext-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

 

 

参考:

  1. ACE Editor在线代码编辑器简介及使用引导
  2. Ace editor中文文档
  3. ACE编辑器ace-editor笔记

 


工作项目中的一次应用

模板文件: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>

 

标签:ACE,ace,入门教程,编辑器,inputId,Editor,true,editor
From: https://www.cnblogs.com/duanweishi/p/17358220.html

相关文章

  • [转]typeScript interface和type区别
    原文地址:https://www.jianshu.com/p/555e6998af36以下为截取的总结,详细请点击查看原文:总结interface和type很像,很多场景,两者都能使用。但也有细微的差别:不同点:扩展语法:interface使用extends,type使用‘&’同名合并:interface支持,type不支持。描述类型:对象、函数......
  • 重磅!Cloud Ace 在硅谷设立第一家美国办事处!
    CloudAceCorporation(总部位于东京千代田区;MakotoAoki,总裁)于2023年4月12日成立了一家美国公司,作为其母公司YoshidumiHoldings,Inc.的子公司。CloudAce一直在全球范围内扩展其业务,从亚洲开始,目标是在世界各地设有办事处。加州的硅谷被称为全球科技公司的聚集地,包括......
  • k8s中快速删除一个namespace
    我总结了2种方式,第1种并不总是有用,没用的时候可以试试第2种1.强制删除,加上--force--grace-period=0参数以kuboardns为例:kdeletenskuboard--force--grace-period=02.删除ns长时间卡住,nsstatus为terminating,可以用edit编辑ns信息,删掉finalizer行仍然以kuboardns为......
  • Hugging Face公司介绍
    HuggingFace是一家非常活跃的人工智能创业公司。它拥有一个非常强大并且活跃的人工智能社区。有超过5000多家机构都在HuggingFace的社区发布内容,包括GoogleAI、FacebookAI、微软等。自从2016年成立以来,这家企业经历了5轮融资,总共募集了6000万美金。 那么,这是一家什么样......
  • 关于oracel 递归语法start with connect by 和 left join 一起使用的一个bug
    左表为树状结构机构表A,右表为人员表(有机构ID字段)BSELECTA.*,B.*FROMALEFTJOINBONA.ORG_ID=B.ORG_IDSTARTWITHA.ORG_ID='011000000004'CONNECTBYPRIORA.ORG_ID=A.P_ORG_ID查询结果出现,B表中的1条记录,最后重复出现。(最终的结果可能为:对A和B......
  • 大规模 Transformer 模型 8 比特矩阵乘简介 - 基于 Hugging Face Transformers、Accel
    引言语言模型一直在变大。截至撰写本文时,PaLM有5400亿参数,OPT、GPT-3和BLOOM有大约1760亿参数,而且我们仍在继续朝着更大的模型发展。下图总结了最近的一些语言模型的尺寸。由于这些模型很大,因此它们很难在一般的设备上运行。举个例子,仅推理BLOOM-176B模型,你就需要8......
  • tracecompass 远程linux 主机lttng trace
    tracecompass支持配置远程主机,然后可以通过可视化界面进行lttng的管理,比如session的启动,eventtrace的开启,然后就是可以直接方便的分析是一个很方便的功能参考界面 集成效果获取的remotetrace信息,可以方便的进行可视化分析说明tracecompass官方有介绍具体如何操作......
  • tracecompass+lttng 分析系统性能问题
    主要是一个测试学习,对于基于babeltrace的我以前写过简单的使用,以下主要是基于tracecompass进行可视化分析安装lttng可以直接使用centos系统自带的,但是推荐使用EfficiOS源wget-P/etc/yum.repos.d/https://packages.efficios.com/repo.files/EfficiOS-RHEL7-x86-......
  • rempe-2023-Trace and Pace: Controllable Pedestrian Animation via Guided Trajecto
    #TraceandPace:ControllablePedestrianAnimationviaGuidedTrajectoryDiffusion#paper1.paper-info1.1MetadataAuthor::[[DavisRempe]],[[ZhengyiLuo]],[[XueBinPeng]],[[YeYuan]],[[KrisKitani]],[[KarstenKreis]],[[SanjaFidler]],[[OrLi......
  • Three.js教程:Face3对象定义Geometry的三角形面
    推荐:将NSDT场景编辑器加入你的3D工具链其他系列工具:NSDT简石数字孪生Face3对象定义Geometry的三角形面几何体Geometry的三角面属性geometry.faces和缓冲类型几何体BufferGeometry顶点索引属性BufferGeometry.index类似都是顶点位置数据的索引值,用来组织网格模型三角形的绘制。......