一、介绍
vue-codemirror 是一个为 Vue.js 应用设计的代码编辑器组件,基于流行的
CodeMirror
编辑器构建。它旨在提供强大的代码编辑功能和良好的用户体验,适合用于在线代码编辑器、IDE、博客、文档和其他需要代码展示的场景。
二、安装
本次是基于vue2进行安装
2.1 安装vue-codemirror
1 2 3
|
npm i vue-codemirror@4.x --save
|
2.2 安装 codemirror
1 2 3
|
npm i codemirror@5.x --save
|
2.3 设置工具js
注意:codemirror 需要的主题样式、语言默认、需要引入后配置才能生效
在 utils
目录下 创建 cm-setting.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
import "codemirror/lib/codemirror.css";
import "codemirror/theme/3024-day.css"; import "codemirror/theme/ayu-mirage.css"; import "codemirror/theme/monokai.css"; import 'codemirror/theme/rubyblue.css';
import "codemirror/mode/htmlmixed/htmlmixed.js";
import 'codemirror/mode/javascript/javascript.js'
|
2.4 全局引入
在 main.js
添加
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| import Vue from "vue"; import App from "./App";
import { codemirror } from "vue-codemirror";
import "@/utils/cm-setting.js";
Vue.component("codemirror", codemirror); .....
|
2.5 按需引入
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| <!-- 组件 --> <template> <div class="content"> <codemirror v-model="code" :options="options"></codemirror> </div> </template> <script> // 文件内引入 import { codemirror } from "vue-codemirror"; // 引入样式、主题、代码风格等配置或样式文件 import "@/utils/cm-setting.js"; export default { // 注册使用 components: { codemirror, }, data() { return { code: "", options: { line: true, theme: "rubyblue", // 主题 tabSize: 4, // 制表符的宽度 indentUnit: 2, // 一个块应该缩进多少个空格(无论这在编辑语言中意味着什么)。默认值为 2。 firstLineNumber: 1, // 从哪个数字开始计算行数。默认值为 1。 readOnly: false, // 只读 autorefresh: true, smartIndent: true, // 上下文缩进 lineNumbers: true, // 是否显示行号 styleActiveLine: true, // 高亮选中行 viewportMargin: Infinity, //处理高度自适应时搭配使用 showCursorWhenSelecting: true, // 当选择处于活动状态时是否应绘制游标 mode: "javascript", }, }; }, }; </script>
|
效果

三、主题
主题参考:https://blog.csdn.net/qq_41694291/article/details/106429772
3.1 添加主题
utils
目录下的 cm-setting.js , 引入对应主题,
主题名字从上面找
1 2 3
| ...... import 'codemirror/theme/monokai.css’; ......
|
3.2 更换主题
1 2 3 4 5 6
| ...... options: { line: true, theme: "monokai", // 主题 } ......
|
效果
