codemirror-editor-vue3编辑器行号错位bug

21 篇文章 2 订阅
该博客详细介绍了如何在Vue.js应用中集成并配置Codemirror编辑器组件。通过引入必要的样式和脚本,设置编辑器的选项如主题、模式、快捷键等,实现了一个功能丰富的代码编辑器。文章涵盖了代码实例、事件监听以及编辑器的初始化和更新过程。
摘要由CSDN通过智能技术生成

 直接当组件使用

<template>
  <div class="codemirror">
    <codemirror
      ref="codemirror"
      v-model:value="code"
      :options="cmOption"
      @cursorActivity="onCmCursorActivity"
      @ready="onCmReady"
      @focus="onCmFocus"
      @blur="onCmBlur"
    />
  </div>
</template>

<script>
import Codemirror from "codemirror-editor-vue3";

// base style
import "codemirror/lib/codemirror.css";

// theme css
import "codemirror/theme/monokai.css";

// language
import "codemirror/mode/vue/vue.js";

// active-line.js
import "codemirror/addon/selection/active-line.js";

// styleSelectedText
import "codemirror/addon/selection/mark-selection.js";
import "codemirror/addon/search/searchcursor.js";

// highlightSelectionMatches
import "codemirror/addon/scroll/annotatescrollbar.js";
import "codemirror/addon/search/matchesonscrollbar.js";
import "codemirror/addon/search/searchcursor.js";
import "codemirror/addon/search/match-highlighter.js";

// keyMap
import "codemirror/mode/clike/clike.js";
import "codemirror/addon/edit/matchbrackets.js";
import "codemirror/addon/comment/comment.js";
import "codemirror/addon/dialog/dialog.js";
import "codemirror/addon/dialog/dialog.css";
import "codemirror/addon/search/searchcursor.js";
import "codemirror/addon/search/search.js";
import "codemirror/keymap/sublime.js";

// foldGutter
import "codemirror/addon/fold/foldgutter.css";
import "codemirror/addon/fold/brace-fold.js";
import "codemirror/addon/fold/comment-fold.js";
import "codemirror/addon/fold/foldcode.js";
import "codemirror/addon/fold/foldgutter.js";
import "codemirror/addon/fold/indent-fold.js";
import "codemirror/addon/fold/markdown-fold.js";
import "codemirror/addon/fold/xml-fold.js";

// import axios from 'axios';

export default {
  props: ["initCode", "mode"],
  name: "code-editor",
  title: "Mode: text/x-vue & Theme: monokai",
  components: {
    Codemirror,
  },

  created() {
    // self.axios = axios.create({
    //   baseURL: '',
    //   timeout: 1000,
    // });
  },

  mounted() {
    this.refreshScript();
  },

  computed: {
    code: {
      get() {
        return this.codeStore;
      },
      set(newVal) {
        this.codeStore = newVal;
      },
    },
  },
  watch: {
    initCode() {
      this.codeStore = this.initCode;
    },
  },

  data() {
    return {
      codeStore: this.initCode,
      cmOption: {
        smartIndent: true, //智能缩进
        indentUnit: 4, // 智能缩进单元长度为 4 个空格
        matchBrackets: true, //每当光标位于匹配的方括号旁边时,都会使其高亮显示
        autofocus: true,
        showCursorWhenSelecting: true,
        autoRefresh: true,

        tabSize: 4,
        foldGutter: true,
        styleActiveLine: true,
        lineNumbers: true,
        line: true,
        keyMap: "sublime",
        mode: this.mode,
        theme: "monokai",
        extraKeys: {
          F11(cm) {
            cm.setOption("fullScreen", !cm.getOption("fullScreen"));
          },
          Esc(cm) {
            if (cm.getOption("fullScreen")) cm.setOption("fullScreen", false);
          },
        },
      },
    };
  },
  methods: {
    refreshScript() {
      let codemirror = this.$refs["codemirror"].cminstance;
      setTimeout(() => {
        codemirror.refresh();
      }, 100);
    },
    onCmCursorActivity(codemirror) {},
    onCmReady(codemirror) {},
    onCmFocus(codemirror) {},
    onCmBlur(codemirror) {},

    getEditorCode() {
      return this.codeStore;
    },
  },
};
</script>



<style>

.CodeMirror-scroll {

  min-height: 200px;
}
</style>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
CodeMirror是一个用于在网页中创建和编辑代码的JavaScript库。它提供了丰富的功能和灵活的配置选项,可以适用于各种编程语言。CodeMirror的官方文档可以在中找到。在参考文档中,可以找到有关如何配置CodeMirror编辑器的信息。 在Vue 3中使用CodeMirror编辑器,可以通过安装codemirror-editor-vue3包来实现。该包是一个Vue 3的封装组件,可以方便地在Vue项目中使用CodeMirror编辑器。你可以在中找到该项目的详细信息和使用说明。 使用codemirror-editor-vue3的步骤如下: 1. 在Vue项目中安装codemirror-editor-vue3包。 2. 在需要使用CodeMirror编辑器的组件中引入codemirror-editor-vue3组件。 3. 在该组件的模板中使用codemirror-editor-vue3组件,并设置相应的props和事件处理函数。 4. 在组件的script部分,可以通过import语句引入需要使用的编程语言的js文件,例如如果需要使用Python语言,可以引入"codemirror/mode/python/python.js"。 5. 在CodeMirror编辑器的配置选项中,设置mode为相应的编程语言模式,例如对于Python语言,可以设置mode为"text/x-python"。 6. 根据项目需要,可以设置其他的CodeMirror编辑器配置选项,如主题、自动补全等。 请注意,使用codemirror-editor-vue3之前,确保已经安装了Vue 3和CodeMirror库,并按照官方文档进行了配置和使用。 参考资料: CodeMirror官方文档:https://codemirror.net/5/mode/index.html codemirror-editor-vue3项目信息和使用说明
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值