国产编辑器EverEdit - 大纲视图

1 大纲视图

1.1 应用场景

  在编辑较长代码文件时,使用大纲视图可以方便的检视当前文件的变量、函数等信息,方便在不同函数间跳转,对整个文档的全貌了然于胸。
  在编辑XML文档时,通过展示XML文件的层次结构、节点布局,用户可以一览全貌,提高编辑效率。

1.2 使用方法

1.2.1 显示大纲视图

  1. 步骤1:选择菜单查看 -> 停靠窗格 -> 大纲视图即可打开“大纲视图”,如下图所示:

在这里插入图片描述

上图中用户编辑vbs文件,左边“大纲视图”显示当前文件中的函数列表

1.2.2 其他大纲功能

跟随光标: 用户在编辑器中进行编辑时,光标移动到哪个函数的函数体,大纲视图中的对应列表也会被选中。
在这里插入图片描述

刷新:重新分析大纲
复制结构: 将整个大纲列表全部复制到剪贴板。

1.3 大纲数据的来源

EverEdit提供了功能强大的大纲分析能力,大致可以分为如下4类:

  • 着色文件定义的符号: 根据语法文件配置的正则表达式规则提取符号。
  • ctags分析器:由ctags.exe对文件进行分析,EverEdit加载ctags的分析结果到大纲。
  • 内置分析器:比如:Go、Markdown。
  • 显示大纲:按EverEdit语法文件的折叠规则进行大纲分析,显示层次结构。

1.3.1 ctags分析器

  对很多编程语言,使用ctag都可以方便的提供对源文件的分析,输出非常详尽的变量、函数等信息,是编写或阅读代码不可多得的帮手。
在这里插入图片描述

使用ctag做为大纲数据来源时,在大纲窗口上单击鼠标右键,可以看到如下菜单:
在这里插入图片描述

显示Tags:平铺:大纲顺序与变量、函数等在文档中的前后顺序对应。
显示Tags:按照从属关系分组:如果识别从属关系,则按从属关系显示,比如:类和成员函数就属于从属关系。
显示Tags:按照类型分组:按符号的类型组织,比如:函数、变量等各分一类。

ctags最早是Vim下的一个组件,开始时是专门为C语言定制的分析器,后面经过发展,支持多达几十种语言,也慢慢的被其他编辑器采用,ctags目前分成了两个主要的分支,其一是exuberant ctags,其支持对41种编程语言进行分析,但该项目早在2009即停止了维护;其继任者是Universal ctags,目前维护状态很活跃,在exuberant ctags的基础上,在不断的增加对其他编程语言的支持,详情请参考:
exuberant ctags
universal-ctags

🕮说明
EverEdit目前使用的ctags是exuberant ctags,版本号是5.8(2009年停止更新),如果用户想使用最新的ctags,可以去universal ctags项目网址下载最新版,解压后将ctags.exe文件替换掉EverEdit安装目录下bin目录的ctags.exe。

1.3.2 内置的分析器

由于早期ctags的发展速度跟不上语言的发展速度,ctags没有及时支持go语法和Markdown语法,EverEdit为此单独地给go、Markdown做了分析器:
在“大纲视图”面板单击鼠标右键,有如下菜单:
在这里插入图片描述

一般情况下,大纲视图会根据打开的文档类型,自动选择对应的分析器,因此,打开go文件、markdown文件就可以直接显示大纲了。

🕮说明
* universal ctags最新版已经支持go、markdown语法,但是分析效果不如EverEdit内置的分析器。

1.3.3 着色文件定义的符号

如果用户日常使用的某种特定语法格式的文件,既没有在ctags的支持范围内,也没有流行到惊动EverEdit单独定制分析器,那么,用户还可以通过语法着色文件来定义自己的解析规则。
下面以编写EverEdit扩展脚本为样例进行演示:

  1. 步骤1:选择菜单“工具 -> 设置 -> 语法着色”,在弹出的语法着色配置窗口中,单击高级按钮,如下图所示:
    注:语法着色列表会自动选中当前打开文档对应的语法规则。
    在这里插入图片描述

  2. 步骤2:配置正则表达式规则和分组
    显示大纲的方式:选择用正则表达式提取符号
    用正则表达式表达式去提取符号编辑框中输入合适的正则表达式(注:需要用户学习正则表达式语法)。
    使用捕获分组编辑框中输入正确的分组(注:分组对应正则表达式中的括号)
    取哪个分组即表示在大纲视图的列表中显示哪组匹配内容,一般使用函数名所在分组。
    在这里插入图片描述

  3. 步骤3:切换到大纲视图即可看到正则表达式提取的符号,如下图所示

在这里插入图片描述

1.3.4 显示大纲

使用方法:在大纲视图面板中单击鼠标右键,选择菜单显示大纲,则大纲面板显示的内容将是有折叠的,该折叠与编辑器里的代码折叠一一对应,如下图所示:

在这里插入图片描述

显示大纲层级结构的来源,为语法着色文件中的折叠规则,用户可以打开菜单工具 -> 设置 -> 语法着色,在弹出的对话框中单击“编辑”按钮,如下图所示
在这里插入图片描述

在打开的语法文件中找到FoldText字样,如下图所示,其定义的正则表达式即为折叠的条件。
在这里插入图片描述

上图示例是VBS语言的折叠规则,折叠规则的定义需要对正则表达式比较熟悉。

1.4 名词解释

符号:这里的符号不是指键盘上的符号(~!@#等),而是指编程语言中的标识符,比如:函数名、变量名、对象名等,标识符一般是以字母或下划线开头,只能包含字母、下划线、数字的字符串,如:Print,Writeln等。


文档作者声明:本文档仅用于学习交流,未经作者许可,不得将本文档用于其他目的。
Copyright © 2022~2024 All rights reserved.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/893360.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MOS怎样选型,步骤详解

一:选用N沟道还是P沟道   为设计选择正确器件的第一步是决定采用N沟道还是P沟道MOSFET。在典型的功率应用中,当一个MOSFET接地,而负载连接到干线电压上时,该MOSFET就构成了低压侧开关。在低压侧开关中,应采用N沟道M…

Linux中的基本指令(一)

一、Linux中指令的存在意义 Linux中,通过输入指令来让操作系统执行,以此达到控制操作系统的目的,类似于Windows中的双击,右键新建文件,新建文件夹等 1.补:关于屏幕的几个操作指令 ①清屏指令 clear 回…

2025/1/21 学习Vue的第四天

睡觉。 --------------------------------------------------------------------------------------------------------------------------------- 11.Object.defineProperty 1.在我们之前学习JS的时候&#xff0c;普通得定义一个对象与属性。 <!DOCTYPE html> <h…

深圳市云盟智慧科技有限公司智慧停车管理系统 SQL注入漏洞复现(附脚本)

免责申明: 本文所描述的漏洞及其复现步骤仅供网络安全研究与教育目的使用。任何人不得将本文提供的信息用于非法目的或未经授权的系统测试。作者不对任何由于使用本文信息而导致的直接或间接损害承担责任。如涉及侵权,请及时与我们联系,我们将尽快处理并删除相关内容。 0x0…

Go Map 源码分析(一)

Go语言中的map是通过哈希表实现的&#xff0c;其底层结构和实现机制如下&#xff1a; 一、hash 结构 hmap结构体&#xff1a;是map的头部结构&#xff0c;主要字段及含义如下&#xff1a; count&#xff1a;表示当前哈希表中的元素数量&#xff0c;与len()函数相对应。flags…

Linux-C/C++--深入探究文件 I/O (上)(文件的管理、函数返回错误、exit()、_Exit()、_exit())

经过上一章内容的学习&#xff0c;相信各位读者对 Linux 系统应用编程中的基础文件 I/O 操作有了一定的认识和理解了&#xff0c;能够独立完成一些简单地文件 I/O 编程问题&#xff0c;如果你的工作中仅仅只是涉及到一些简单文件读写操作相关的问题&#xff0c;其实上一章的知识…

线性回归笔记1-4

matplotlib的scatter功能&#xff1a; plt.scatter(x, y, ssizes, ccolors, cmapviridis, alpha0.6, markero, linewidths2, edgecolorsk, labelRandom Data) sizes np.random.rand(2) * 300 # 生成两个0到300之间的随机数作为大小 sizes np.array([50, 200]) # 第一个点大小…

【机器学习实战中阶】音乐流派分类-自动化分类不同音乐风格

音乐流派分类 – 自动化分类不同音乐风格 在本教程中,我们将开发一个深度学习项目,用于自动化地从音频文件中分类不同的音乐流派。我们将使用音频文件的频率域和时间域低级特征来分类这些音频文件。 对于这个项目,我们需要一个具有相似大小和相似频率范围的音频曲目数据集…

被遮挡QT窗口置顶

问题描述 开发环境&#xff1a;windows QT 需求&#xff1a; 单击托盘将桌面窗口在被遮挡的情况下置顶解决方案 方案1 资料链接 代码实现 Qt::WindowFlags flags windowFlags(); this->setWindowFlags((flags | Qt::WindowStaysOnTopHint)); this->showMaximized();…

Walrus Learn to Earn计划正式启动!探索去中心化存储的无限可能

本期 Learn to Earn 活动将带领开发者和区块链爱好者深入探索 Walrus 的技术核心与实际应用&#xff0c;解锁分布式存储的无限可能。参与者不仅能提升技能&#xff0c;还能通过完成任务赢取丰厚奖励&#xff01;&#x1f30a; 什么是 Walrus&#xff1f; 数据主权如今正成为越…

git 常用命令 git archive

git archive 是 Git 中用于创建一个包含指定提交或分支中所有文件的归档文件&#xff08;如 .tar 或 .zip&#xff09;的命令。这个命令非常适合用于分发项目快照、备份代码库或导出特定版本的文件。 git archive --formatzip --outputproject.zip HEAD …

Excel 技巧15 - 在Excel中抠图头像,换背景色(★★)

本文讲了如何在Excel中抠图头像&#xff0c;换背景色。 1&#xff0c;如何在Excel中抠图头像&#xff0c;换背景色 大家都知道在PS中可以很容易抠图头像&#xff0c;换背景色&#xff0c;其实Excel中也可以抠简单的图&#xff0c;换背景色。 ※所用头像图片为百度搜索&#x…

持续升级《在线写python》小程序的功能,文章页增加一键复制功能,并自动去掉html标签

增加复制按钮后的界面是这样的 代码如下&#xff1a; <template><view><x-header></x-header><view class"" v-if"article_info"><view class"kuai bgf"><view class"ac fs26"><img sr…

使用 Babylon.js 开发时如何通过 CSS 实现 UI 自适应

本文将介绍如何在 Babylon.js 开发中&#xff0c;通过预先定义的 CSS 文件实现 UI 的自适应布局&#xff0c;确保 UI 能够根据 Canvas 元素的尺寸动态调整。 场景描述 假设我们已经使用 HTML 和 CSS 构建了 Babylon.js 的 UI 界面&#xff0c;并且所有样式都定义在 CSS 文件中…

99.5 金融难点通俗解释:市销率(PS)

目录 0. 承前1. 简述&#xff1a;市销率&#xff08;PS&#xff09;2. 比喻&#xff1a;市销率&#xff08;PS&#xff09;2.1 第一步&#xff1a;理解"销售额"2.2 第二步&#xff1a;理解"市场价格"2.3 第三步&#xff1a;理解"市销率" 3. 生活…

FPGA与ASIC:深度解析与职业选择

IC&#xff08;集成电路&#xff09;行业涵盖广泛&#xff0c;涉及数字、模拟等不同研究方向&#xff0c;以及设计、制造、封测等不同产业环节。其中&#xff0c;FPGA&#xff08;现场可编程门阵列&#xff09;和ASIC&#xff08;专用集成电路&#xff09;是两种重要的芯片类型…

【Linux】Linux入门(三)权限

目录 前提权限概念whoami指令 Linux权限管理文件访问者的分类&#xff08;人&#xff09;file指令权限信息权限的表示方法 chmod指令 更改权限chown指令 修改文件&#xff0c;文件夹所属用户和用户组 权限掩码umask&#xff08;权限掩码&#xff09; 粘滞位 前提 请先看下面这…

蓝桥与力扣刷题(73 矩阵置零)

题目&#xff1a;给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,1,1],[1,0,1],[1,1,1]] 输出&#xff1a;[[1,0,1],[0,0,0],[1,0,1]]示例 2&…

《探秘鸿蒙Next:非结构化数据处理与模型轻量化的完美适配》

在鸿蒙Next的人工智能应用场景中&#xff0c;处理非结构化数据并使其适配模型轻量化需求是一项关键且具有挑战性的任务。以下是一些有效的方法和策略。 数据预处理 数据清洗&#xff1a;非结构化数据中往往存在噪声、重复和错误数据。对于文本数据&#xff0c;要去除乱码、特殊…

Node.js接收文件分片数据并进行合并处理

前言&#xff1a;上一篇文章讲了如何进行文件的分片&#xff1a;Vue3使用多线程处理文件分片任务&#xff0c;那么本篇文章主要看一下后端怎么接收前端上传来的分片并进行合并处理。 目录&#xff1a; 一、文件结构二、主要依赖1. express2. multer3. fs (文件系统模块)4. pat…