拒绝重复造轮子!vue-codemirror 助你快速集成代码编辑器

vue2 导入使用vue-codemirror详解 vue使用vue-codemirror详解,包含语言配置、主题配置等。 阅读详情

嘿,前端小伙伴!你需要的代码编辑器来了

你是否在Vue项目中需要一个漂亮又好用的代码编辑器?手动写一个太麻烦?今天给你推荐一个超好用的插件——vue-codemirror,让你分分钟搞定代码编辑功能!

什么是vue-codemirror?

简单说,vue-codemirror是基于CodeMirror 6的Vue 3组件,它能让你在Vue项目中轻松集成一个功能强大的代码编辑器,支持:

  • 语法高亮(支持多种编程语言)
  • 主题切换(亮/暗主题等)
  • 代码折叠、行号显示
  • 快捷键支持
  • 实时内容绑定

⚠️ 重要提示:当前版本(v5/v6)只支持Vue 3,不兼容Vue 2!如果你用Vue 2,需要去看旧版(vue-codemirror@4.x)。

手把手教你安装

第一步,安装肯定少不了。打开你的终端,输入下面的命令:

如果你用yarn:

yarn add codemirror vue-codemirror

如果用npm:

npm install codemirror vue-codemirror --save

安装额外的语言和主题

核心包只是基础,比如你想编辑JavaScript代码,还得装对应的语言包:

# 安装JavaScript语言支持
yarn add @codemirror/lang-javascript

# 安装JSON语言支持(如果需要)
yarn add @codemirror/lang-json

想换个好看的主题?安排!比如这个One Dark主题(类似VS Code的暗黑主题):

yarn add @codemirror/theme-one-dark

记住,需要什么语言或主题,就装对应的包,别漏啦!

两种使用方式,任你选

方式一:本地组件引入(推荐单个组件使用)

在你的Vue文件里,先引入组件和需要的扩展:

// 引入组件
import { Codemirror } from 'vue-codemirror'
// 引入JavaScript语言支持
import { javascript } from '@codemirror/lang-javascript'
// 引入One Dark主题
import { oneDark } from '@codemirror/theme-one-dark'

然后在模板里这样写:

<template>
  <div class="editor-container">
    <h3>我的第一个代码编辑器</h3>
    <!-- codemirror组件 -->
    <codemirror
      v-model="code"  <!-- 双向绑定代码内容 -->
      placeholder="写点JavaScript代码吧..."  <!-- 空内容时的提示文字 -->
      :style="{ height: '400px', border: '1px solid #ccc' }"  <!-- 设置高度和边框 -->
      :extensions="[javascript(), oneDark]"  <!-- 启用JS语言支持和暗黑主题 -->
      @change="handleCodeChange"  <!-- 内容变化时触发 -->
    />
  </div>
</template>

脚本部分别忘了定义code变量和事件处理:

import { ref } from 'vue'

export default {
  components: { 
    Codemirror  // 注册组件
  },
  setup() {
    // 初始代码内容
    const code = ref(`// 这是vue-codemirror生成的编辑器
console.log('Hello, 前端开发者!')
function add(a, b) {
  return a + b
}
console.log('1+2=', add(1, 2))`)
    
    // 监听内容变化
    const handleCodeChange = (value) => {
      console.log('代码内容:', value)
      // 这里可以做保存、实时预览等操作
    }
    
    return { 
      code, 
      handleCodeChange 
    }
  }
}

这样,一个带语法高亮、暗黑主题的JS编辑器就出来啦!效果如下(想象一下):

  • 输入JS代码会自动高亮关键字
  • 行号自动显示
  • 支持Tab缩进(默认2个空格)
  • 内容变化时会打印到控制台

方式二:全局组件注册(适合多个组件使用)

如果你的项目很多地方都需要用编辑器,全局注册更方便。在main.js(或main.ts)里:

import { createApp } from 'vue'
import App from './App.vue'
// 引入基础设置(包含行号、折叠等基础功能)
import { basicSetup } from 'codemirror'
// 引入vue-codemirror
import VueCodemirror from 'vue-codemirror'

const app = createApp(App)

// 全局注册
app.use(VueCodemirror, {
  // 全局默认配置
  autofocus: true,  // 默认自动聚焦
  indentWithTab: true,  // 允许用Tab缩进
  tabSize: 2,  // Tab缩进大小
  placeholder: '请输入代码...',  // 默认提示文字
  extensions: [basicSetup]  // 加载基础功能
})

app.mount('#app')

之后在任何组件里直接用,不用再引入:

<template>
  <codemirror v-model="htmlCode" :extensions="[html()]"/>
</template>

核心配置详解

extensions(扩展)—— 最重要的配置

extensions决定了编辑器的功能,比如语言、主题、额外功能等。你可以把它理解为“插件集合”。

比如同时启用多种功能:

import { javascript } from '@codemirror/lang-javascript'
import { oneDark } from '@codemirror/theme-one-dark'
import { lineNumbers } from '@codemirror/view'  // 行号显示

// 组合多个扩展
const extensions = [
  javascript(),  // JS语言支持
  oneDark,       // 暗黑主题
  lineNumbers()  // 显示行号(如果基础设置里没有)
]

常用属性(Props)

属性名作用示例
v-model双向绑定代码内容v-model="code"
placeholder空内容时的提示文字placeholder="请输入代码"
:style设置编辑器样式(必须设置高度):style="{ height: '400px' }"
autofocus加载后自动聚焦:autofocus="true"
disabled禁用编辑:disabled="isDisabled"
tabSizeTab缩进空格数:tabSize="4"

常用事件(Events)

事件名触发时机回调参数
@change内容变化时(value: string) → 最新代码内容
@focus编辑器聚焦时-
@blur编辑器失焦时-
@ready编辑器初始化完成时(view: EditorView) → 编辑器实例

例如,获取编辑器实例(用于高级操作):

<codemirror 
  v-model="code"
  @ready="handleReady"
/>

<script>
const handleReady = (payload) => {
  // 获取编辑器实例
  const editorView = payload.view
  console.log('编辑器已准备好', editorView)
  // 可以调用CodeMirror的API,比如获取光标位置
}
</script>

新手常见问题 & 避坑指南

1. 安装后报错:“Vue is not defined”

→ 原因:你用的是Vue 2,但当前版本只支持Vue 3。
→ 解决:要么升级Vue 3,要么安装旧版:npm install vue-codemirror@4.x --save

2. 代码没有语法高亮

→ 原因:没安装对应语言的扩展包,或没在extensions里配置。
→ 解决:安装语言包(如@codemirror/lang-javascript),并在extensions中添加。

3. 编辑器高度太小,看不到内容

→ 原因:默认没有高度,需要手动设置。
→ 解决:通过:style设置height,比如:style="{ height: '400px' }"

4. 主题不生效

→ 原因:没安装主题包,或没在extensions中配置。
→ 解决:安装主题包(如@codemirror/theme-one-dark),并添加到extensions。

项目地址 & 更多资源

总结

vue-codemirror真的是前端开发的好帮手,不用自己从零开发编辑器,几行代码就能集成一个功能强大的代码编辑组件。无论是做在线代码演示、配置文件编辑,还是开发一个小型IDE,它都能胜任!

快去试试吧,有问题欢迎留言讨论~

vue项目中,在线编辑器vue-codemirror、ace、和monaco的使用及踩坑记录 vue2版本不支持最新的vue-codemirror,所以要下载固定的版本4.0.6,并且要搭配codemirror使用,codemirror也不建议使用6以上的版本。由于第一次使用代码编辑器插件,之前都没接触过,花了几天时间才做出来满意的,参考了好几个大佬的文章,大家有需要可以自行查找相关文章!在要展示codemirror的页面,导入以下文件,包括有语言文件JavaScript,主体样式eclipse,和代码折叠所需的文件fold/xxx。代码:参考的一个大佬的,但是文章被关掉了,大家可以自己去找找。 阅读详情

相关推荐

Vue使用的编辑器

本章将会带你了解Vue前端开发常使用的IDE工具。

m0_74885516的博客 9603

vue-codemirror—基于vue的代码在线编辑

vue-codemirror—基于vue的代码在线编辑器 CodeMirror(下面简称为cm)是一款基于JavaScript、面向语言的前端代码编辑器。它支持开箱即用,自带了超过100种语言的库,同时还有很多附加功能,目前得到了jetbrains等公司的支持。在这个分类下,能够与cm并驾齐驱的另一个编辑器则是ACE。CodeMirror官网:https://codemirror.net/ 1. CodeMirror引入 在cm官网使用手册中,介绍了在项目中引入cm的方式。如果是传统项目,使用cdn或者

qq_45780380的博客 3万+

电池管理系统(BMS)系列(四)—数据采集之温度

属于BMS系列文章,介绍了电池包温度采集相关方式

zxx52113140的博客 5458

vue-codemirror代码编辑器使用心得和踩坑

最近工作中需要优化下之前的网页端编辑器,我作为后端开发,虽然做这个不专业,但也只能硬着头皮上啊,大量查阅资料,还是优化了一些内容的,在这里分析一下。

修理男爵的博客 1万+

VBA中如何使用Edge内核Browser?

在微软宣布停止对IE的支持后,许多使用VBA中Web Browser的用户遇到了困境,因为Web Browser使用的IE内核。然而微软并没有给出支持Edge的新版Web Browser,网上许多第三方的库也不够完善。经过调研,libEdge可以较好的和VBA集成,实现在Excel中打开Browser,甚至能够通过执行js代码,获取web页面的信息。项目需要WebView2Loader.dll和LibEdge.dll两个库,区分x86和x64版本。

金木AI 2398

别再被骚扰了!手把手教你彻底卸载阿里云盾(安骑士)并封禁其IP段

本文详细指导如何彻底卸载阿里云盾(安骑士)并封禁其IP段,帮助用户夺回服务器控制权。从识别监控组件到执行官方卸载脚本,再到手动清理残留文件和配置iptables规则,确保完全阻断云盾通信。适用于追求极致性能或需要完全自主控制的环境。

weixin_42525551的博客 452

在vue中实现在线代码编辑器之CodeMirror

以上就是我使用codemirror的一些经验,我是通过页面集成了vue-codemirror,来实现了一个在页面上的代码编辑器,从而可以方便的编辑和查看某些配置文件。

crud_man的博客 1万+

合宙Air780EP速连OneNET:AT+MQTT应用指南

本文详细讲解了合宙Air780EP使用AT指令通过MQTT接入OneNET的过程。

2401_82812461的博客 1390

vue-codemirror代码编辑器使用心得和踩坑总结,一路走来我累了

vue-codemirror github 地址: https://github.com/surmon-china/vue-codemirrorcodemirror 中文文档:https://olindk.gitbooks.io/codemirror/content/configuration.htmlcodemirror 英文文档:https://codemirror.net/doc/manual.html#config。

1万+

Robosuite实战:通过Xbox手柄实现机械臂6-DoF精准控制的完整指南

本文详细介绍了如何通过Xbox手柄实现机械臂的6-DoF精准控制,结合Robosuite仿真环境与MuJoCo物理引擎,提供从环境配置到代码实现的完整指南。文章重点解析了手柄映射原理、核心控制代码以及数据采集优化技巧,帮助开发者高效完成机械臂控制任务。

weixin_29169505的博客 419

(功能安全六)硬件FMEDA计算

FMEDA(故障模式、影响与诊断分析)是功能安全验证的核心方法,通过量化分析硬件故障模式及其影响,计算SPFM、LFM、PMHF等关键指标。分析过程包含六大步骤:计算元器件失效率、识别故障模式、评估安全机制诊断覆盖率、分类计算各类失效率、量化指标计算及设计优化。输入需要系统架构图、硬件故障模式清单等资料,输出安全指标达标情况及改进建议,确保设计满足ASIL等级要求。该方法通过系统化的故障分类和量化评估,为硬件安全设计提供科学依据。

Dayongger的博客 1451

Vue-CodeMirror 使用

vue-codemirror使用

weixin_44278630的博客 1万+

一篇文章带你快速入门 MATLAB

文章目录一、认识 MATLAB 界面二、MATLAB 的运行方式三、Matlab 中的窗口1. 命令窗口2. MATLAB的程序编辑窗口3. 工作空间窗口4. 命令历史窗口5. 图形窗口6. 当前目录窗口四、MATLAB的帮助系统1. 帮助命令2. 联机帮助五、其他知识补充1. MATLAB的搜索路径2. 变量命名规则3. M文件命名规则 一、认识 MATLAB 界面 在 MATLAB Desktop 中,工具条取代了菜单和工具栏。应用程序库收纳了 MATLAB 产品系列的应用程序,单一文件应用程序打包为一

南淮北安的博客 5128

【vue-codemirror】Vue中强大的编辑器插件--vue-codemirror

CodeMirror是一个功能强大的Web代码编辑器,广泛应用于各种Web应用中。在Vue3项目中集成CodeMirror,可以显著提升代码编辑和展示的用户体验。本文将结合实际案例,详细介绍在Vue3中使用CodeMirror插件的方法。

景天科技苑 5万+

SimpleITK使用——1. 进行Resample/Resize操作

文章目录1. 变换到一个新的spacing1.1 使用Resample()的方法1.1.1 完整代码1.1.2 转换前后图像1.2 使用ResampleImageFilter()的方法2. 已知原图和变换后目标图像的大小2.1 代码2.2 转换后图像3. 相关内容说明3.0 体素和spacing3.1 Resample() 函数说明3.2 itk::simple::ResampleImageFilter函数说明 1. 变换到一个新的spacing 1.1 使用Resample()的方法 1.1.1

啷个哩个啷 8081

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Vue使用codemirror

Vue页面使用codemirroe、vue使用代码块

PrintLnGoodLuck的博客 7970

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

如何实现在 Vue 中嵌入代码编辑器 ?

前言:在 Vue日常项目开发中,会遇到将后端传回的代码格式化输出并支持用户编辑的需求。实现方法有很多,可以分别使用 vue2-ace-editor,vue-prism-editor,codemirror等插件方法实现,下面对这三种方法的使用做一个总结 。 方法一:使用vue2-ace-editor插件实现 安装 npm i vue2-ace-editor -S 组件内使用实例 <!-- 使用 vue2-ace-editor 插件实现 --> <template&g...

Wu hao's blog 5301

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

vue-codemirror使用详细过程(包括修改宽度,更换语言模式,C++模式,HTML模式,括号补全)

近期在做一个oj项目,要使用代码编辑器,过程中碰到一些问题,现在记录下步骤。 参考文章:https://blog.csdn.net/senmage/article/details/103742854 大致效果: 1.安装,直接在你的vue项目中使用npm指令 npm install vue-codemirror --save 2.引入和参数配置,这里直接参考https://blog.csdn.net/senmage/article/details/103742854 (先都按照参考文章..

laisy334514的博客 2万+

vue-codemirror5 中文文档 (vue2.0)

确定光标在从右到左(阿拉伯语、希伯来语)文本中的水平移动是可视的(按下左箭头将光标向左移动)还是逻辑的(按下左箭头将光标移动到字符串中的下一个较低的索引,在从右到左的文本中显示为右)。大多数输入都是由事件捕获的,但是有些东西,比如某些浏览器上的IME输入,不会生成允许CodeMirror正确检测它的事件。默认值true,将使整行(或行中换行的一部分)的光标高度保持恒定。默认值是10000。当启用时(默认为关闭),将向每个标记添加一个额外的CSS类,指示生成它的(内部)模式,前缀为“cm-m-”。

Cocoon_Xu的博客 1万+

vue2 使用代码编辑器插件 vue-codemirror

之前用过一次,当时用的一知半解的,所以也没有成文,前几天又因为项目有需求,所以说有用了一次,当然,依旧是一知半解,但是还是稍微写一下子吧!万一以后用到,不用满网找资料了,个人学习记录,仅供参考,切勿尽信!

“跟他人学,和自己比” 4849

vue 中使用代码编辑器vue-codemirror

/ 引入配置对应的文件(样式、主题、代码格式等)3、样式主题文件cm-setting.js。2、全局引入man.js 文件。1、安装(两个都需要安装)

Qing416439079的博客 1309

Vue3中使用vue-codemirror实现代码在线编辑和效果预览

Vue3中使用vue-codemirror实现代码在线编辑和效果预览

可可爱爱的你吖的博客 1910

Vue-Codemirror 安装与使用指南

--- ## 项目介绍 Vue-Codemirror 是专为 Vue.js(包括 Vue 3)设计的 CodeMirror 组件,它封装了著名的 CodeMirror 代码编辑器库,使之完美融入 Vue 应用场景。此组件支持多种编程语言的语法高亮、代码自动补全、主题切换等特性,极大地提升了在前端界面中进行代码编辑的体验。Vue-Codemirror 由于其轻量化和可定制性,在开发需要嵌入代码编...

gitblog_00091的博客 1918

分享一个vue2的代码高亮编辑器vue-codemirror@4.0.6

vue-codemirror是我最近项目中使用的一款代码在线编辑器,支持语言范围广、简单、易配置。

u014197593的博客 2375

vue-codemirror实现代码编辑器

vue-codemirror代码编辑器——编辑JSON版

sdu_21_lyh的博客 1939
上一篇: 闭源潮下的云原生求生:Rancher/Sealos/OpenShift谁能接盘500万用户?
下一篇: 记录一个手贱改的一个Docker配置,导致网络问题
hackchen
博客等级 码龄19年 193粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值