规则编辑器

基于 CodeMirror 6 封装的规则编辑器,支持正则校验、搜索和主题切换。

此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.greasyfork.org/scripts/566628/1756739/RuleEditor.js

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

作者
ryxel
版本
1.0.0
创建于
2026-02-18
更新于
2026-02-18
大小
955.0 KB
许可证
MIT

CodeMirror 6 规则编辑器使用文档

本编辑器基于 CodeMirror 6 构建,集成了自定义语法高亮、正则表达式校验、实时搜索导航以及多主题切换功能。


快速开始

通过 window.CodeMirror6 全局对象初始化编辑器并获取控制实例。

const container = document.getElementById('editor-container');
const editor = window.CodeMirror6.createEditor(container);


核心 API

内容操作

  • setContent(content, keepHistory)
    • 功能:设置编辑器文本。
    • 参数keepHistory (boolean) 为 false 时会重置撤销历史并更新同步快照。
  • getContent()
    • 功能:获取当前编辑器的完整文本字符串。
  • updateSnapshot()
    • 功能:将当前文档内容手动设为同步基准快照。

主题与搜索

  • setTheme(isDark)
    • 功能:切换视觉主题。true 为深色,false` 为浅色。
  • setSearch(term)
    • 功能:更新搜索关键词并触发高亮,自动跳转至当前匹配项。
  • findNext()
    • 功能:在匹配项之间进行向下导航。
  • findPrev()
    • 功能:在匹配项之间进行向上导航。

监听回调

  • onSyncStatusChange(callback)
    • 功能:当文档内容与快照的同步状态发生变化时触发。
    • 回调结构:返回 isSynced (boolean)。
  • onSearchUpdate(callback)
    • 功能:搜索结果更新时触发。
    • 回调结构:返回对象 { total, current, isExact }
      • total: 匹配到的总行数。
      • current: 当前光标最接近的匹配行索引(从 1 开始)。
      • isExact: 光标是否精确落在匹配行上。

规则解析

  • getRules()
    • 功能:解析语法树并返回结构化数据。
    • 返回值结构:返回对象 { regexps, keywords, errors }
      • regexps: 包含合法正则的列表。
      • keywords: 识别到的关键字字符串列表。
      • errors: 语法错误的正则及其位置信息。


语法说明

编辑器支持以下三种基础语法元素:

  • 关键词:直接输入的文本内容,用于匹配特定字串。
  • 正则表达式:支持 /pattern/flags 格式,内置实时合法性校验。
  • 注释:以 # 开头的整行内容或行末内容。


声明与参考

本项目基于 CodeMirror 6 核心库构建,并在交互设计与 UI 表现上参考了 uBlacklistuBlock Origin