codemirror6 展示vue代码

参考:

vue-codemirror | Homepage

vue3中使用codemirror6增加代码提示功能_vue 编辑器提示-CSDN博客

vue-codemirror6+vue3的基础使用(行高、json字符串、黑暗主题、自定义主题)-CSDN博客

一:安装依赖 

npm i codemirror
npm i vue-codemirror
npm i @codemirror/theme-one-dark
npm i @codemirror/lang-vue

二:代码使用

<template>
  <win ref="winRef" title="代码" noBtns width="90%" top="0">
    <Codemirror
      v-model="code"
      placeholder="Code goes here..."
      :style="{ height: '80vh' }"
      :autofocus="true"
      :indent-with-tab="true"
      :tab-size="2"
      :extensions="extensions"
      @ready="handleReady"
    />
  </win>
</template>

<script lang="ts" setup>
import { Codemirror } from "vue-codemirror";
import { vue } from "@codemirror/lang-vue";
import { oneDark } from "@codemirror/theme-one-dark";
import { tpl } from "./tpls/grid";

import {
  ref,
  reactive,
  withDefaults,
  defineProps,
  defineEmits,
  defineExpose,
  toRefs,
  computed,
  watch,
  nextTick,
  toRaw,
} from "vue";
const code = ref(tpl.trim());
const extensions = [vue(), oneDark];

const winRef = ref();

function templateReplace(
  template: string,
  values: { [key: string]: string }
): string {
  return template.replace(/#(\w+)#/g, (match, key) => {
    return values[key];
  });
}
const onSubmit = async () => {
  props.afterSubmit(cloneDeep(toRaw(columns.value)));
};
function handleReady() {
  console.log("ready");
}

defineExpose({
  show: async (data?: any) => {
    let str = tpl.trim();
    const v = {
      api: data.gridApi,
      defaultFilter: data.defaultFilter || undefined,
      defaultSort: data.defaultSort || undefined,
      columns: JSON.stringify(toRaw(data.gridColumns), null, 2),
      searchFields: JSON.stringify(toRaw(data.searchColumns), null, 2),
      tbarBtns: JSON.stringify(toRaw(data.btnsColumns), null, 2),
    };
    code.value = templateReplace(str, v);
    winRef.value.show();
  },
});
</script>
<style lang="scss" scoped>
.tb {
  height: 300px;
}
</style>

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
vue-codemirror6是一个基于Vue.js代码编辑器组件,它内置了一些默认的代码补全功能,但如果想要进行自定义代码补全,可以按照以下步骤进行操作。 首先,需要明确自定义代码补全的需求,确定需要补全的关键字、语法以及对应的代码片段。 然后,在Vue组件中引入vue-codemirror6,并配置相应的属性和事件。可以通过设置"options"属性来添加自定义的代码补全功能。在"options"中,可以使用"hintOptions"属性来设置代码补全提示的选项。可以设置"hint"为一个函数,该函数将在触发代码补全时被调用。在这个函数中,可以编写逻辑来根据输入的关键字返回相应的补全列表。 接下来,在"hint"函数中,可以使用CodeMirror提供的API来实现自定义的代码补全功能。例如使用CodeMirror的registerHelper方法来注册一个自定义的代码补全帮助函数,用于提供自定义的补全列表。 在自定义的代码补全帮助函数中,可以根据输入的关键字和语法,进行匹配和筛选,返回需要补全的代码片段列表。可以根据需要,展示提示头、提示详情等信息,并对选择的补全项进行相应的处理和插入。 最后,在Vue组件中监听相应的事件,例如"input"事件,根据用户输入的关键字,触发代码补全的逻辑。可以借助CodeMirror提供的API来显示和隐藏代码补全的列表,并根据用户选择的补全项进行相应的插入操作。 综上所述,通过以上步骤可以在vue-codemirror6中实现自定义的代码补全功能。根据具体需求,可以定制补全的关键字、语法和代码片段,提升代码编辑的效率和准确性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值