ACE 是一个开源的、独立的、基于浏览器的代码编辑器,可以嵌入到任何web页面或JavaScript应用程序中。ACE支持超过60种语言语法高亮,并能够处理代码多达400万行的大型文档。ACE开发团队称,ACE在性能和功能上可以媲美本地代码编辑器(如Sublime Text、TextMate和Vim等)。

ACE是Mozilla Skywriter(以前称为Bespin)项目的继任者,并作为Cloud9的主要在线编辑器。

一、特性

  • 可以对60多种语言进行语法着色(可以导入TextMate/Sublime/.tmlanguage 文件)
  • 20多种主题(可以导入TextMate/Sublime/.tmtheme文件)
  • 自动缩进,减少缩进
  • 一个可选的命令行
  • 处理巨大的文件,可以处理4,000,000行代码
  • 完全自定义的键绑定,包括V正则表达式搜索和替换
  • 高亮匹配括号
  • 软标签和真正的标签之间切换
  • 显示隐藏的字符
  • 用鼠标拖放文本
  • 换行
  • 代码折叠
  • 多个光标和选择
  • 实时语法检查器(支持 JavaScript/CoffeeScript/CSS/XQuery)
  • 剪切,复制和粘贴功能IM和Emacs模式

二、使用

1、引入 ace

  1. var ace = require("lib/ace");

2、设置主题

  1. editor.setTheme("ace/theme/twilight");

3、设置程序语言模式

  1. editor.getSession().setMode("ace/mode/javascript");

4、一般常用操作
设置、获取内容:

  1. editor.setValue("the new text here"); // or session.setValue
  2. editor.getValue(); // or session.getValue

获取选择内容:

  1. editor.session.getTextRange(editor.getSelectionRange());

在光标处插入:

  1. editor.insert("Something cool");

获取光标所在行或列:

  1. editor.selection.getCursor();

跳转到行:

  1. editor.gotoLine(lineNumber);

获取总行数:

  1. editor.session.getLength();

设置默认制表符的大小:

  1. editor.getSession().setTabSize(4);

使用软标签:

  1. editor.getSession().setUseSoftTabs(true);

设置字体大小,这个其实不算API:

  1. document.getElementById('editor').style.fontSize='12px';

设置代码折叠:

  1. editor.getSession().setUseWrapMode(true);

设置高亮:

  1. editor.setHighlightActiveLine(false);

设置打印边距可见度:

  1. editor.setShowPrintMargin(false);

设置编辑器只读:

  1. editor.setReadOnly(true); // false to make it editable

5、触发尺寸缩放
编辑器默认自适应大小,如果要程序控制resize,使用如下方法:

  1. editor.resize();

6、搜索

editor.find('needle',{
backwards: false,
wrap: false,
caseSensitive: false,
wholeWord: false,
regExp: false
});
editor.findNext();
editor.findPrevious();

下列选项可用于您的搜索参数:
needle: 要查找的字符串或正则表达式
backwards: 是否反向搜索,默认为false
wrap: 搜索到文档底部是否回到顶端,默认为false
caseSensitive: 是否匹配大小写搜索,默认为false
wholeWord: 是否匹配整个单词搜素,默认为false
range: 搜索范围,要搜素整个文档则设置为空
regExp: 搜索内容是否是正则表达式,默认为false
start: 搜索起始位置
skipCurrent: 是否不搜索当前行,默认为false
替换单个字符:

  1. editor.find('foo');
  2. editor.replace('bar');

替换多个字符:

  1. editor.replaceAll('bar');

editor.replaceAll使用前需要先调用editor.find('needle', ...)
7、事件监听
监听改变事件:

editor.getSession().on('change', function(e) {
// e.type, etc
});

监听选择事件:

editor.getSession().selection.on('changeSelection', function(e) {
});

监听光标移动:

editor.getSession().selection.on('changeCursor', function(e) {
});

8、添加新命令、绑定按键
要指定键绑定到一个自定义函数:

editor.commands.addCommand({
name: 'myCommand',
bindKey: {win: 'Ctrl-M', mac: 'Command-M'},
exec: function(editor) {
//...
},
readOnly: true // 如果不需要使用只读模式,这里设置false
});

三、禁止复制代码

<script type="text/javascript">
editor.setReadOnly(true);
editor.commands.addCommand({
name: 'myCommand',
bindKey: {win: 'Ctrl-C', mac: 'Command-C'},
exec: function(editor) {
layer.alert('禁止复制',{title:'提示'})
console.log(editor) },
readOnly: true // 如果不需要使用只读模式,这里设置false
});
if (window.Event)
document.captureEvents(Event.MOUSEUP);
function nocontextmenu(){
event.cancelBubble = true
event.returnValue = false;
return false;
}
function norightclick(e){
if (window.Event){
if (e.which == || e.which == )
return false;
}
else
if (event.button == || event.button == ){
event.cancelBubble = true
event.returnValue = false;
return false;
}
}
document.oncontextmenu = nocontextmenu; // for IE5+
document.onmousedown = norightclick; // for all others
</script>

在线编辑器ACE Editor的使用的更多相关文章

  1. 在线编辑器的使用-KindEditor

    第一种:KindEditor编辑器 步骤一:加载相应的核心的文件 下载地址:http://kindeditor.net/demo.php <link rel="stylesheet&q ...

  2. ACE Editor在线代码编辑器简介及使用引导

    转自博客:https://www.cnblogs.com/cz-xjw/p/6476179.html ACE 是一个开源的.独立的.基于浏览器的代码编辑器,可以嵌入到任何web页面或JavaScrip ...

  3. Ace在线编辑器使用requirejs配置

    Ace代码在线编辑器如果需要在requirejs里使用,注意需要使用github上lib/ace目录的文件. 如果使用ajaxorg/ace-builds下面的代码再使用requirejs会报错,不能 ...

  4. Django使用Ace实现在线编辑器

    前言:最近自己开发SQL工单功能,期间接触到了Ace在线编辑器,折腾一下,感觉功能挺多,特意去了解学习一下分享跟大家. ACE 是一个功能非常强大的编辑器,实现语法高亮.代码补全功能,还有很多主题,支 ...

  5. 【前端】ACE Editor(代码编辑器) 简易使用示例

    身为一个早已退役的Oier,当然忘不了当年一个个OJ页面上的代码显示和代码编辑器. 其中,洛谷使用的ACE Editor就是之一,非常的简洁美观.以及实际上在前端页面上搭建一个ACE Editor也是 ...

  6. codemirror和ace editor的语法高亮

    两个javascript库用做在线代码编辑器都是非常优秀的选择 我这两天对这两个类库做了简单的研究,重点是语法高亮的自定义: ace editor的主要思路是生成状态机,从一个startstate开始 ...

  7. 05传智_jbpm与OA项目_部门模块中增加部门的jsp页面增加一个在线编辑器功能

    这篇文章讲的是在线编辑器功能,之前的部门模块中,增加部门的功能jsp页面起先是这么做的.

  8. 将kindeditor在线编辑器制作成smarty插件

    在web开发中,在线编辑器是经常要用到的功能模块,虽说配置在线编辑器没有多大难度,但是每一次编写重复的代码,总是让人感觉不爽. 本篇,就来讲解一下,如何将kindeditor制作成smarty的一个自 ...

  9. CKEditor在线编辑器增加一个自定义插件

    CKEditor是一个非常优秀的在线编辑器,它的前身就是FCKEditor,CKEditor据官方说是重写了内核的,但功能和性能比FCKEditor更为强大和优越.记得07年的时候第一次接触FCKEd ...

随机推荐

  1. 集成腾讯位置服务到webapi

    经纬度转换为详细地址信息 参考文档:http://lbs.qq.com/webservice_v1/guide-gcoder.html 首先申请key,如果使用的是服务端请求webservice AP ...

  2. MVC Post 提交表单 允许他提交参数包含html标记的解决方法

    MVC Post 提交表单的时候,如果参数中包含html标记,则需要在控制器上方加上 [ValidateInput(false)]标记后就可以正常提交表单了例如: [HttpPost] [Valida ...

  3. [PHP] 多进程通信-消息队列使用

    向消息队列发送数据和获取数据的测试 <?php $key=ftok(__FILE__,'a'); //获取消息队列 $queue=msg_get_queue($key,0666); //发送消息 ...

  4. markdown基础入门

    一.标题 语法:# 文字 注意:1个#号代表标题1,两个代表标题2,依次类推 # 标题1 ## 标题2 ### 标题3 #### 标题4 ##### 标题5 ###### 标题6 二.加粗,斜体 语法 ...

  5. spring aop 实践

    之前用的ssm框架,大部分只是利用spring的IOC特性,很明显这能够为我们开发人员在对象的创建上面节省大部分时间.当相似得到业务越来越多,很多代码也是越来越重复,轮子是越来越重复,比如验证用户登录 ...

  6. Python 部分系统类的常用方法整理

    下面是常用的几个系统类的常用方法整理: list: 列表[1, 2,...] set: 集合,无重复元素{1, 2,...} str: 字符串 dict: 字典{a:'a', b:'b',...} T ...

  7. 用Python实现Zabbix-API 监控

    做运维的朋友应该知道,公司IDC机房经常有上架.下架.报修和报废的服务器.如果服务器数量很多的时候很容易造成监控遗漏.       大的互联网公司把监控系统和CMDB(资产管理系统|配置管理数据库系统 ...

  8. jquery对象和DOM对象的相互转换详解

    jquery对象和DOM对象的相互转换 在讨论jquery对象和DOM对象的相互转换之前,先约定好定义变量的风格如果获取的是jquery对象,那么在变量前面加上$,例如 var $varible = ...

  9. 网页字体在Frontpage2000制作网页中的讲解

    运用HTML,我们可以对字体的大小及字形进行简单的修改,但要进行统一地控制.创建特殊效果,就必须要用到CSS.它能让您更有效地控制网页外观,并可以扩充精确指定网页元素位置,外观以及创建特殊效果的能力. ...

  10. 浅谈运维中的安全问题-FTP篇

    写这一系列文章的动因很简单,在年前最后一个项目的时候在客户现场做了的几个安全加固.由于时间问题,很多东西就拿来主义没经过思考直接更改了,并未细细品味其中的原理和方法,所以特地搭建实验环境,分析下其中的 ...