在vue中使用monaco-editor

本文详细介绍了在Vue项目中如何使用Monaco-Editor,从初始化设置、更新编辑器属性、引入语言包、监听编辑器事件到插入修改文本和销毁编辑器的全过程。重点强调了初始化时设置高度的重要性,以及更改语言包的注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.初始化

<div ref="codeContainer" style="height: 380px" />

import * as monaco from 'monaco-editor/esm/vs/editor/editor.api'

this.editMsg = monaco.editor.create(this.$refs.codeContainer, {
        value: '', // 默认值
        readOnly: true, // 是否只读
        lineNumbers: true, // 是否显示行数
        theme: 'vs-dark', // 编辑器主题
        lineHeight: 20, // 行高
        tabSize: 2, // 缩进
        automaticLayout: true, // 是否自适应宽高,设置为true的话会有性能问题
        language: 'python' // 语言,需要引入相应文件
      })

注意:
div要添加高度,如果不添加高度,monaco高度就为0,无法显示出来

2.修改属性updateOptions

updateOptions可用于修改monaco的readonly等属性
设置value使用this.editMsg.setValue(value)
设置language需要先销毁编辑器,再重新定义

3.语言包的引入

vue中下载所有包都在node_modules文件夹下,monaco的所有语音包都存放在node_modules/monaco-editor/esm/vs/basic-langules文件夹内
举个例子:如果要引入JavaScript语言包,就应该这样写:

import 'monaco-editor/esm/vs/basic-languages/javascript/javascript.contribution'

4.事件

编辑器内容修改事件

this.editor.getModel().onDidChangeContent((e) => {
        // ...
      })

5.插入修改文本

插入文本:

const selection = this.editor.getSelection()
      this.editor.executeEdits('insert-code', [
        {
          range: new monaco.Range(
            selection.endLineNumber,
            selection.endColumn,
            selection.endLineNumber,
            selection.endColumn
          ),
          text: content
        }
      ])

6.销毁

this.editMsg.dispose()

参考链接:
https://zhuanlan.zhihu.com/p/202976058

https://zhuanlan.zhihu.com/p/47746336

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值