vue中codemirror自定义自动补全

一、下载并引入vue-codemirror

1、下载
npm install vue-codemirror
2、引入
   <codemirror
        ref="editor"
        class="code"
        v-model="data"
        :options="mirrorOptions"
        @focus="focusHandle"
        @blur="blurHandle"
        @changes="changeHandle"
        @ready="readyHandle"
    ></codemirror>

import { codemirror } from 'vue-codemirror';
import CodeMirror from "codemirror";
//引入提示样式文件
require('codemirror/addon/hint/show-hint.css');
require('codemirror/addon/hint/show-hint.js');
require('codemirror/addon/hint/sql-hint.js');
require('codemirror/addon/hint/javascript-hint.js');

二、在ready事件中定义自动提示方法

private readyHandle(codemirror:CodeEditor) {
        	this.codemirror = codemirror;
            
          	this.codeEditor.on("keypress", () => {
                //编译器内容更改事件
                const config = {
                    // 自定义提示选项
                    completeSingle: false, // 当匹配只有一项的时候是否自动补全
                    hint: hint,
                };
                this.codeEditor?.showHint(config);
            });

		  const hint = (editor: CodeEditor, callback: (str: Record<string, unknown>) => void) => {
		  	//获取CodeMirror上面的一个方法
            const Pos = CodeMirror.Pos;
            // 获取光标位置
            const cur = editor.getCursor();
            // 获取当前单词的信息
            const token = editor.getTokenAt(cur as unknown as { string: string; start: number; end: number });
            //用来放提示的单词
            let found: string[] = [];
            //当前正在输入的单词 通过它判断提示啥啥
            const currentStr = token.string;
            //一个简单的示例 输入if后提示数组中的
            if (currentStr === "if") {
                found = ["if (  ) {}", "other..."];
            }

            const result = {
                list: found,
                from: Pos(cur.line,token.start),
                to: Pos(cur.line, token.end),
            };
            callback(result);
        };
        hint.async = true;
        hint.supportsSelection = true;
        },

三、结果展示

1、图片展示

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值