vue-codemirror基本用法:实现搜索功能、代码折叠功能、获取编辑器值及时验证

昨天实现了一些codemirror:基本的编辑代码功能、插入变量功能、codemirror语法验证功能、代码格式化(由于主要是json数据,所以暂时没引用其他组件,如果需要建议引用js-beautify,因为查资料发现codemirror在新的版本中已经去掉autoFormatRange方法),如果想了解更多,请参考《教你轻松搞懂vue-codemirror的基本用法:主要实现代码编辑、验证提示、代码格式化》,今天接着昨天的功能代码继续,主要分享vue-codemirror实现搜索功能、代码折叠功能、获取编辑器值及时验证功能。

1. vue-codemirror 搜索功能

1.1 在原来的基础上需要引入需要的资源
import 'codemirror/addon/scroll/annotatescrollbar.js'
import 'codemirror/addon/search/matchesonscrollbar.js'
import 'codemirror/addon/search/match-highlighter.js'
import 'codemirror/addon/search/jump-to-line.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'

其实引入这些资源基本的搜索功能已经实现,按ctrl+F 或者command+F就编辑器顶部就可以出现搜索框。
image.png

1.2 点击按钮实现搜索效果

产品考虑到有的人可能不知道用快捷键,就设计了一个按钮,点击进行搜索,点击搜索按钮,搜索框出现在编辑器的顶部。searchCode就是对应的点击按钮事件时候调用的方法。

methods: {
	searchCode (e) {
      this.codemirror.execCommand('find') //触发
  }
}

2. vue-codemirror折叠功能

折叠功能刚开始做这个编辑器的时候就想加上,但是试了一下没成功,因为配置比较多,还需要引入资源,所以这个放到最后才加。

2.1 vue-codemirror折叠需要引入的资源,既有样式文件又有js文件,这些都是不可少的
// 折叠
import 'codemirror/addon/fold/foldgutter.css'
import 'codemirror/addon/fold/foldcode'
import 'codemirror/addon/fold/foldgutter'
import 'codemirror/addon/fold/brace-fold'
import 'codemirror/addon/fold/comment-fold'

2.2 vue-codemirror折叠需要的基本配置
{
	 foldGutter: true,
   lineWrapping: true,
   gutters: ['CodeMirror-linenumbers', 'CodeMirror-foldgutter', 'CodeMirror-lint-markers'],
}

vue-codemirror折叠不需要扩展什么功能,只需要引入需要资源和配置好初始化的配置参数即可。

获取编辑器值及时验证功能

其实这个功能就是在vue-codemirror代码编辑器值出现语法错误的时候,及时按钮变成不可点击状态,当值没有啥错误的时候,提交按钮为可点击状态,没找到更好的获取编辑器验证状态的值,只能自己想了一个小捷径,判断是否有错误的代码,用watch监听数据,当数据发生变化的时候,看是否有错误存在。实现代码如下:

 watch: {
    jsonData (val) {
      this.checkValid()
    }
  },
  methods: {
  checkValid () {
      setTimeout(() => {
        this.codemirror.refresh()
        const container = this.$refs.codeMirror
        const len = container.querySelectorAll('.CodeMirror-lint-marker-error').length
        this.isValid = !!len && len > 0
      }, 1000)
    }
  }

效果如下图:
image.png

总结:

今天主要是接着《教你轻松搞懂vue-codemirror的基本用法:主要实现代码编辑、验证提示、代码格式化》文章继续分享vue-codemirror的一些用法,主要实现了搜索、代码折叠等功能。这仅仅代表我个人的观点,如有错误,欢迎指正。
关注lovepythoncn
**
qrcode_for_gh_4d3763fa9780_258 (1).jpg
回复关键字:code2, 就可以获取源码地址

Vue CodeMirror 6是一个基于Vue.js和CodeMirror的组件库,用于实现代码编辑器。它支持多种语言和主题,并提供了许多自定义选项。 下面是一个使用Vue CodeMirror 6实现代码编辑器的示例: 1. 安装vue-codemirror6 ```bash npm install vue-codemirror6 ``` 2. 在Vue组件中使用CodeMirror ```vue <template> <div> <codemirror v-model="code" :options="cmOptions" /> </div> </template> <script> import { defineComponent } from 'vue' import CodeMirror from '@uiw/react-codemirror' import 'codemirror/keymap/sublime' import 'codemirror/theme/dracula.css' import 'codemirror/mode/javascript/javascript' export default defineComponent({ name: 'CodeEditor', components: { CodeMirror }, data() { return { code: '', cmOptions: { theme: 'dracula', keyMap: 'sublime', mode: 'javascript', lineNumbers: true } } } }) </script> ``` 在这个示例中,我们首先导入并注册了`CodeMirror`组件,并定义了一个`code`变量来存储用户输入的代码。然后,我们使用`cmOptions`对象来配置CodeMirror实例的选项,包括主题、按键映射、语言模式和行号。 最后,我们将`code`变量和`cmOptions`对象分别绑定到`v-model`和`options`属性上,这样就可以实现一个完整的代码编辑器。 需要注意的是,在这个示例中我们只使用了JavaScript语言模式,如果需要支持其他语言,需要根据需要引入对应的模式文件,如`codemirror/mode/htmlmixed/htmlmixed`等。 总之,使用Vue CodeMirror 6可以方便快捷地创建一个功能强大的代码编辑器,并支持多种语言和主题的自定义。
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端岚枫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值