发表于黑白课堂

ace.js

官方的github https://github.com/ajaxorg/ace

ace 是一个用 JavaScript 编写的独立代码编辑器。我们的目标是创建一个基于浏览器的编辑器,该编辑器匹配并扩展现有本机编辑器(如 TextMate,VIM 或 Eclipse)的功能,可用性和性能。它可以轻松嵌入任何网页或 JavaScript 应用程序中。Ace 是 Cloud9 IDE 的主要编辑者,也是 Mozilla Skywriter(Bespin)项目的继承者。

特点

超过 120 种语言的语法突出显示(可导入 TextMate / Sublime / .tmlanguage 文件)

超过 20 个主题(可导入 TextMate / Sublime / .tmtheme 文件)

自动缩进和突出

可选的命令行

处理大量文件(最后检查,4,000,000 行是上限)

完全可定制的键绑定,包括 VIM 和 Emacs 模式

搜索并替换正则表达式

突出显示匹配的括号

在软标签和真实标签之间切换

显示隐藏的字符

使用鼠标拖放文本

换行

代码折叠

多个游标和选择

实时语法检查器(目前是 JavaScript / CoffeeScript / CSS / XQuery)

剪切,复制和粘贴功能

ace.js 编译文件下载

默认情况下,它是分开的2个库,经过查找,找了,不需要自己打包编译出来。

https://github.com/ajaxorg/ace-builds/

下载即可,有多种模式。

file

git clone https://github.com/ajaxorg/ace-builds.git

ace.js快速入门

初始化

定义 HTML

编写 JS

some text

var editor = ace.edit ("editor");// 这里不需要加 #

这样是不能显示的,所有需要加个高度和宽度,例如

#editor {

width: 500px;

height: 400px;

}

主题

加入你的主题 JS

写入调用

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

输入模式

默认情况下,输入的是文本编辑器,如果你想要加入 JavaScript 编辑器,需要加入文件,并且设置模式

var JavaScriptMode = ace.require ("ace/mode/JavaScript").Mode;

editor.session.setMode (new JavaScriptMode ());

销毁

editor.destroy ();

editor.container.remove ();

自动提示语法

editor.setOptions ({

enableBasicAutocompletion: true,//

enableSnippets: true,//

enableLiveAutocompletion: true,// 补全

});

监听内容实时输出

editor.getSession().on ('change', function (e) {

});

获得输入内容 editor.getValue ()

设置输入内容 editor.setValue (editorValue);

移动光标 editor.moveCursorTo (0, 0);// 移动光标至第 0 行,第 0 列

编辑内容搜索 editor.execCommand ('find');// 与 ctrl+f 功能一致

ace.js配置

创建并初始化 ace.edit(element, options);

// pass options to ace.edit

ace.edit("元素ID", {

mode: "ace/mode/javascript",

selectionStyle: "text"

})

方法设置参数多个 editor.setOptions(options)

var editor=ace.edit("元素ID");

editor.setOptions({

enableBasicAutocompletion: true,

enableSnippets: true,

enableLiveAutocompletion: true,//只能补全

});

方法设置参数单个 editor.setOption(options)

取得单个配置 editor.getOption

editor.getOption("optionName");

设置主题 editor.setThemee("主题")

editor.setTheme("ace/theme/monokai");//monokai

设置编辑器语言模式getSession().setMode(mode)

editor.getSession().setMode("ace/mode/html");//语言

支持以下

|-- ambiance.css

|-- ambiance.js

|-- chaos.css

|-- chaos.js

|-- chrome.css

|-- chrome.js

|-- clouds.css

|-- clouds.js

|-- clouds_midnight.css

|-- clouds_midnight.js

|-- cobalt.css

|-- cobalt.js

|-- crimson_editor.css

|-- crimson_editor.js

|-- dawn.css

|-- dawn.js

|-- dracula.css

|-- dracula.js

|-- dreamweaver.css

|-- dreamweaver.js

|-- eclipse.css

|-- eclipse.js

|-- github.css

|-- github.js

|-- gob.css

|-- gob.js

|-- gruvbox.css

|-- gruvbox.js

|-- idle_fingers.css

|-- idle_fingers.js

|-- iplastic.css

|-- iplastic.js

|-- katzenmilch.css

|-- katzenmilch.js

|-- kr_theme.css

|-- kr_theme.js

|-- kuroir.css

|-- kuroir.js

|-- merbivore.css

|-- merbivore.js

|-- merbivore_soft.css

|-- merbivore_soft.js

|-- mono_industrial.css

|-- mono_industrial.js

|-- monokai.css

|-- monokai.js

|-- nord_dark.css

|-- nord_dark.js

|-- pastel_on_dark.css

|-- pastel_on_dark.js

|-- solarized_dark.css

|-- solarized_dark.js

|-- solarized_light.css

|-- solarized_light.js

|-- sqlserver.css

|-- sqlserver.js

|-- terminal.css

|-- terminal.js

|-- textmate.css

|-- textmate.js

|-- tomorrow.css

|-- tomorrow.js

|-- tomorrow_night.css

|-- tomorrow_night.js

|-- tomorrow_night_blue.css

|-- tomorrow_night_blue.js

|-- tomorrow_night_bright.css

|-- tomorrow_night_bright.js

|-- tomorrow_night_eighties.css

|-- tomorrow_night_eighties.js

|-- twilight.css

|-- twilight.js

|-- vibrant_ink.css

|-- vibrant_ink.js

|-- xcode.css

`-- xcode.js

取消语言模式的语法检查 editor.session.setUseWorker(false);

editor.session.setUseWorker(false);

editor.getSession().setUseWorker(false);

更改编辑器的大小

editor.resize()

获取选定的文本:

editor.getSelectedText(); // or for a specific range

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

光标处输入信息

editor.insert("Something cool");

替换范围内的文本

editor.session.replace(new ace.Range(0, 0, 1, 1), "new text");

获取当前光标所在的行和列:

editor.selection.getCursor();

转到一行:

editor.gotoLine(lineNumber);

获取总行数:

editor.session.getLength();

设置默认TAB大小:

editor.session.setTabSize(4);

设置字体大小:

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

切换自动换行:

editor.session.setUseWrapMode(true);

设置行高亮显示:

editor.setHighlightActiveLine(false);

设置打印边距可见性:

editor.setShowPrintMargin(false);

将编辑器设置为只读:

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

查找

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:该[范围]内搜索。将null整个文档设置为

regExp:搜索是否为正则表达式。默认为false。

start:开始搜索的起始[范围]或光标位置

skipCurrent:是否在搜索中包括当前行。默认为false。

preventScroll:是否将光标移动到下一个匹配项。默认为false。

这是执行替换的方法:

editor.find('foo');

editor.replace('bar');

这是全部替换:

editor.replaceAll('bar');

(editor.replaceAll使用较早设置的针头editor.find('needle', ...)

ace.js 监听事件

onchange 内容变化监听

editor.session.on('change', function(delta) {

// delta.start, delta.end, delta.lines, delta.action

});

监听 selection

editor.session.selection.on('changeSelection', function(e) {

});

监听光标:

editor.session.selection.on('changeCursor', function(e) {

});

添加新命令和快捷键

editor.commands.addCommand({

name: 'myCommand',//命令名称

bindKey: {win: 'Ctrl-M', mac: 'Command-M'},//快捷键

exec: function(editor) {

//执行的代码

},

readOnly: true // false 只读模式

});

配置模式和主题的动态加载

ace.config.set("basePath", "https://url.to.a/folder/that/contains-ace-modes");

一个模块的路径可以单独配置:

ace.config.setModuleUrl("ace/theme/textmate", "url for textmate.js");

将ace与webpack一起使用时,可以使用以下命令配置所有子模块的路径

require("ace-builds/webpack-resolver");

ace 英文wiki

ace.js在线演示实例

ace.js ajax 跳转,ace.js中文使用手册,收集比较全面相关推荐

  1. js页面跳转 和 js打开新窗口方法

    js页面跳转 和 js打开新窗口 方法 Js返回上一页: 1. Javascript 返回上一页 history.go(-1), 返回两个页面: history.go(-2); 2. history. ...

  2. js页面跳转和js打开新窗口

    js页面跳转 和 js打开新窗口 方法 Js返回上一页: 1. Javascript 返回上一页 history.go(-1), 返回两个页面: history.go(-2); 2. history. ...

  3. js页面跳转和js对iframe进行页面跳转、刷新

    js页面跳转和js对iframe进行页面跳转.刷新 一.js方式的页面跳转 1.window.location.href方式     <script language="javascr ...

  4. js 跳转html,js页面跳转方式 js页面跳转举例

    js页面跳转,在日常的开发中,经常被用到,因为它灵活方便. 本文为大家收集了几种js页面跳转的方式,供朋友们参考. 方式1: 复制代码 代码示例: window.location.href=" ...

  5. js页面跳转 URL含中文造成乱码

    当在地址栏中传递参数时,服务器端获取的参数值为乱码. 解决: 1.使用JS将中文转为ASCII码 var param = encodeURI("中文参数"); 备注:encodeU ...

  6. js页面跳转 和 js打开新窗口 方法

    2010-07-10 23:56:45|  分类: js实用脚本|字号 订阅 第一种:     <script language="javascript" type=&quo ...

  7. html js实现跳转页面,js跳转页面方法实现汇总

    3布丁足迹;秒后自动跳转-- function countDown(secs){ tiao.innerText=secs; if(--secs>0) setTimeout("count ...

  8. js ajax局部替换,纯JS实现AJAX局部刷新功能

    AJAX即"Asynchronous Javascript And XML"(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术. AJAX = 异步 J ...

  9. 原生js.ajax内存溢出,【JS】解决内存溢出问题

    首页 专栏 javascript 文章详情 0 解决内存溢出问题 comer发布于 27 分钟前 webpack 运行 npm run build 内存溢出 JavaScript heap out o ...

最新文章

  1. 常见TCP/UDP端口
  2. Zabbix监控 之 OID动态索引
  3. 宽带Internet连接的类型—Vecloud微云
  4. springboot起步配置和自动配置原理
  5. (69)番外 —— 编写一个简易的反调试引擎
  6. ECCV 2020 《Propagating Over Phrase Relations for One-Stage Visual Grounding》论文笔记
  7. SQLServer 查看耗时较多的SQL语句
  8. 疫情之下, 远程办公软件是如何逆势增长的?
  9. 逆向工程的使用(逆向工程的压缩包下载分享)
  10. rsync 同步文件
  11. 点到平面的距离、向量与平面夹角
  12. 为什么你996猝死,你老板007都没事?
  13. Idea启动文件配置java目录_项目IDEA启动配置
  14. 线上AI僚机,告诉你对方喜好,手把手教你如何正确约会
  15. C# Winform窗体切换与关闭
  16. 海银财富领军人物:韩宏伟(军人企业家)
  17. oracle树结构统计,Oracle树形统计--子节点汇总到父节点
  18. uni-app 启动广告页
  19. 应急响应的整体思路和基本流程
  20. 微信公众号开发测试帐号

热门文章

  1. SNS 好像遇到了拐点?
  2. 简明高效的 Java 并发编程学习指南
  3. Ubuntu下通过 PPA 安装 Komodo 编辑器
  4. Socket / ServerSocket
  5. 人的寿命可能与智商成正比
  6. java 判断数的位数_Java判断数字位数的两种方法
  7. oracle test就死,简单说明Oracle数据库中对死锁的查询及解决方法
  8. linux 内核模块 编写例子,Linux内核模块实例
  9. css如何让图片不平铺,css怎么设置图片平铺方式?
  10. 教师要与时俱进,不要自以为正确