没有合适的资源?快使用搜索试试~ 我知道了~
首页vue中实现Monaco Editor自定义提示功能
资源详情
资源评论
资源推荐

vue中实现中实现Monaco Editor自定义提示功能自定义提示功能
最近小编接到一个项目,需要在浏览器的ide中支持自定义提示功能,接下来通过本文给大家介绍在vue中实现
Monaco Editor自定义提示功能,需要的朋友可以参考下
这次接到一个需求,要在浏览器的 IDE 中支持自定义提示功能,如下所示:
可以看到,它可以根据用户输入的内容来一项一项排除,只显示完全匹配的那一项。
项目的框架是 Vue ,编辑器用的是 Monaco Editor 。
什么是什么是 Monaco Editor
vscode 是我们经常在用的编辑器,它的前身是微软的一个叫 Monaco Workbench 的项目,而 Monaco Editor 就是从这个项目中成长
出来的一个 web 编辑器,他们很大一部分的代码都是共用的,所以 Monaco Editor 和 VSCode 在编辑代码,交互及 UI 上几乎是一
摸一样的。不同的是,两者的平台不一样, Monaco Editor 基于浏览器,而 VSCode 基于 electron ,所以功能上 VSCode 更加健
全,性能比较强大。
用法用法
安装安装
npm install monaco-editor --save
使用使用
<div id="monaco" class="monaco-editor"></div>
import * as monaco from 'monaco-editor';
this.fileEditor = this.monaco.editor.create(document.getElementById('monaco'), {
value: null,
language: 'sql' // 这里以sql为例
})
this.fileEditor.dispose(); // 使用完后销毁
这里引入 monaco 要注意,在 react 中以下面方式引入:
import * as monaco from 'monaco-editor/esm/vs/editor/editor.api';
实现自定义提示功能实现自定义提示功能
查看了资料后,发现在 monaco 中有提供一个提示功能的方法 registerCompletionItemProvider ,具体实现如下:
this.monaco.languages.registerCompletionItemProvider('sql', { // 这里以sql语言为例
provideCompletionItems () {
return [{
label: '${_DB', // 显示的提示内容
kind: this.monaco.languages.CompletionItemKind['Function'], // 用来显示提示内容后的不同的图标
insertText: '{_DB', // 选择后粘贴到编辑器中的文字
detail: '' // 提示内容后的说明
}];
},
triggerCharacters: ['$'] // 触发提示的字符,可以写多个
});
以上的用法,我试了一下之后发现,虽然 triggerCharacters 的值是数组,可以有多个,但是里面的字符串只能识别一个字符。一
开始的需求是输入 ${_ 之后提示 ${_DB ,但是由于不能识别多个字符,只能做到出现 $ 就提示。
还有一个问题就是 registerCompletionItemProvider 的第一个参数只能是字符串,如果有多种语言只能叠加重复写,恰巧我的需求是
有多种语言,所以只能如下解决,也就是每种语言都写了一遍:
['json', 'yaml', 'php', 'go', 'sql', 'java', 'markdown', 'plaintext'].map(item => {
this.monaco.languages.registerCompletionItemProvider(item, {
provideCompletionItems () {
return [{
label: '${_DB',
kind: this.monaco.languages.CompletionItemKind['Function'],
insertText: '{_DB',
detail: ''
}];
},
triggerCharacters: ['$']
});



















weixin_38720997
- 粉丝: 7
- 资源: 889
上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助

会员权益专享
最新资源
- Xilinx SRIO详解.pptx
- Informatica PowerCenter 10.2 for Centos7.6安装配置说明.pdf
- 现代无线系统射频电路实用设计卷II 英文版.pdf
- 电子产品可靠性设计 自己讲课用的PPT,包括设计方案的可靠性选择,元器件的选择与使用,降额设计,热设计,余度设计,参数优化设计 和 失效分析等
- MPC5744P-DEV-KIT-REVE-QSG.pdf
- 通信原理课程设计报告(ASK FSK PSK Matlab仿真--数字调制技术的仿真实现及性能研究)
- ORIGIN7.0使用说明
- 在VMware Player 3.1.3下安装Redhat Linux详尽步骤
- python学生信息管理系统实现代码
- 西门子MES手册 13 OpcenterEXCR_PortalStudio1_81RB1.pdf
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制

评论0