# EditUltra **Repository Path**: xiangshan/EditUltra ## Basic Information - **Project Name**: EditUltra - **Description**: 中国人开发开源的小巧又功能丰富的文本/源码编辑器(内嵌数据库客户端、Redis客户端) - **Primary Language**: C/C++ - **License**: Apache-2.0 - **Default Branch**: release - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 170 - **Created**: 2020-07-30 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README EditUltra - 中国人开发开源的小巧快速又功能丰富的文本/源码编辑器(内嵌数据库客户端、Redis客户端) ======================================================================================== - [1. 概述](#1-%E6%A6%82%E8%BF%B0) - [2. 开发历程](#2-%E5%BC%80%E5%8F%91%E5%8E%86%E7%A8%8B) - [3. 安装](#3-%E5%AE%89%E8%A3%85) - [3.1. 绿色安装](#31-%E7%BB%BF%E8%89%B2%E5%AE%89%E8%A3%85) - [3.2. 源码编译安装](#32-%E6%BA%90%E7%A0%81%E7%BC%96%E8%AF%91%E5%AE%89%E8%A3%85) - [4. 功能导览](#4-%E5%8A%9F%E8%83%BD%E5%AF%BC%E8%A7%88) - [4.1. 一级菜单"文件"](#41-%E4%B8%80%E7%BA%A7%E8%8F%9C%E5%8D%95%E6%96%87%E4%BB%B6) - [4.1.1. 文件操作](#411-%E6%96%87%E4%BB%B6%E6%93%8D%E4%BD%9C) - [4.1.2. 换行符风格](#412-%E6%8D%A2%E8%A1%8C%E7%AC%A6%E9%A3%8E%E6%A0%BC) - [4.1.3. 字符编码](#413-%E5%AD%97%E7%AC%A6%E7%BC%96%E7%A0%81) - [4.1.4. 远程文件管理器](#414-%E8%BF%9C%E7%A8%8B%E6%96%87%E4%BB%B6%E7%AE%A1%E7%90%86%E5%99%A8) - [4.2. 一级菜单"编辑"](#42-%E4%B8%80%E7%BA%A7%E8%8F%9C%E5%8D%95%E7%BC%96%E8%BE%91) - [4.2.1. 剪切、复制、粘贴和删除](#421-%E5%89%AA%E5%88%87%E5%A4%8D%E5%88%B6%E7%B2%98%E8%B4%B4%E5%92%8C%E5%88%A0%E9%99%A4) - [4.2.2. 合并行](#422-%E5%90%88%E5%B9%B6%E8%A1%8C) - [4.2.3. 大小写转换](#423-%E5%A4%A7%E5%B0%8F%E5%86%99%E8%BD%AC%E6%8D%A2) - [4.2.4. 启用编辑辅助功能](#424-%E5%90%AF%E7%94%A8%E7%BC%96%E8%BE%91%E8%BE%85%E5%8A%A9%E5%8A%9F%E8%83%BD) - [4.2.5. BASE64编解码](#425-base64%E7%BC%96%E8%A7%A3%E7%A0%81) - [4.2.6. 散列/消息摘要](#426-%E6%95%A3%E5%88%97%E6%B6%88%E6%81%AF%E6%91%98%E8%A6%81) - [4.2.7. DES加解密](#427-des%E5%8A%A0%E8%A7%A3%E5%AF%86) - [4.3. 一级菜单"搜索"](#43-%E4%B8%80%E7%BA%A7%E8%8F%9C%E5%8D%95%E6%90%9C%E7%B4%A2) - [4.3.1. 查找和替换](#431-%E6%9F%A5%E6%89%BE%E5%92%8C%E6%9B%BF%E6%8D%A2) - [4.3.2. 快速选择](#432-%E5%BF%AB%E9%80%9F%E9%80%89%E6%8B%A9) - [4.3.3. 高级选择](#433-%E9%AB%98%E7%BA%A7%E9%80%89%E6%8B%A9) - [4.3.4. 高级移动光标](#434-%E9%AB%98%E7%BA%A7%E7%A7%BB%E5%8A%A8%E5%85%89%E6%A0%87) - [4.3.5. 书签管理](#435-%E4%B9%A6%E7%AD%BE%E7%AE%A1%E7%90%86) - [4.3.6. 导航操作](#436-%E5%AF%BC%E8%88%AA%E6%93%8D%E4%BD%9C) - [4.4. 一级菜单"视图"](#44-%E4%B8%80%E7%BA%A7%E8%8F%9C%E5%8D%95%E8%A7%86%E5%9B%BE) - [4.4.1. 显示/隐藏文件资源树](#441-%E6%98%BE%E7%A4%BA%E9%9A%90%E8%97%8F%E6%96%87%E4%BB%B6%E8%B5%84%E6%BA%90%E6%A0%91) - [4.4.2. 调整字体颜色方案](#442-%E8%B0%83%E6%95%B4%E5%AD%97%E4%BD%93%E9%A2%9C%E8%89%B2%E6%96%B9%E6%A1%88) - [4.4.3. 显示/隐藏行号/书签](#443-%E6%98%BE%E7%A4%BA%E9%9A%90%E8%97%8F%E8%A1%8C%E5%8F%B7%E4%B9%A6%E7%AD%BE) - [4.4.4. 显示/隐藏白字符](#444-%E6%98%BE%E7%A4%BA%E9%9A%90%E8%97%8F%E7%99%BD%E5%AD%97%E7%AC%A6) - [4.4.5. 缩放](#445-%E7%BC%A9%E6%94%BE) - [4.5. 一级菜单"编程"](#45-%E4%B8%80%E7%BA%A7%E8%8F%9C%E5%8D%95%E7%BC%96%E7%A8%8B) - [4.5.1. 语句块折叠](#451-%E8%AF%AD%E5%8F%A5%E5%9D%97%E6%8A%98%E5%8F%A0) - [4.5.2. 源代码符号表](#452-%E6%BA%90%E4%BB%A3%E7%A0%81%E7%AC%A6%E5%8F%B7%E8%A1%A8) - [4.5.3. 自动完成和语法提示](#453-%E8%87%AA%E5%8A%A8%E5%AE%8C%E6%88%90%E5%92%8C%E8%AF%AD%E6%B3%95%E6%8F%90%E7%A4%BA) - [4.5.4. 数据库SQL文件](#454-%E6%95%B0%E6%8D%AE%E5%BA%93sql%E6%96%87%E4%BB%B6) - [4.5.5. REDIS文件](#455-redis%E6%96%87%E4%BB%B6) - [4.6. 一级菜单"环境"](#46-%E4%B8%80%E7%BA%A7%E8%8F%9C%E5%8D%95%E7%8E%AF%E5%A2%83) - [4.6.1. WINDOWS资源管理器右键菜单](#461-windows%E8%B5%84%E6%BA%90%E7%AE%A1%E7%90%86%E5%99%A8%E5%8F%B3%E9%94%AE%E8%8F%9C%E5%8D%95) - [4.6.2. 处理当前文件和当前选择文本的命令](#462-%E5%A4%84%E7%90%86%E5%BD%93%E5%89%8D%E6%96%87%E4%BB%B6%E5%92%8C%E5%BD%93%E5%89%8D%E9%80%89%E6%8B%A9%E6%96%87%E6%9C%AC%E7%9A%84%E5%91%BD%E4%BB%A4) - [4.7. 一级菜单"帮助"](#47-%E4%B8%80%E7%BA%A7%E8%8F%9C%E5%8D%95%E5%B8%AE%E5%8A%A9) - [4.8. 目前支持语法高亮的语言列表](#48-%E7%9B%AE%E5%89%8D%E6%94%AF%E6%8C%81%E8%AF%AD%E6%B3%95%E9%AB%98%E4%BA%AE%E7%9A%84%E8%AF%AD%E8%A8%80%E5%88%97%E8%A1%A8) - [4.9. 启动速度评测](#49-%E5%90%AF%E5%8A%A8%E9%80%9F%E5%BA%A6%E8%AF%84%E6%B5%8B) - [5. 最后](#5-%E6%9C%80%E5%90%8E) # 1. 概述 `EditUltra`是中国人开发开源的对标`UltraEdit`的小巧快速又功能丰富的文本/源码编辑器(内嵌数据库客户端、Redis客户端),她基于开源的富文本编辑控件`Scintilla`提供的基本文本编辑能力,实现了一个完整的文本/源码编辑器,还直接执行SQL和Redis命令功能,整个软件只有10MB(不包含Oracle/MySQL客户端库)。 ![images/EditUltra_hello.png](images/EditUltra_hello.png) ![images/EditUltra_database_client.png](images/EditUltra_database_client.png) ![images/EditUltra_redis.png](images/EditUltra_redis.png) `EditUltra`主要功能包含但不限于: * 多文件选项卡 * WINDOWS资源管理器右键菜单打开文件/目录中所有文件 * 检测文件变动实时重载 * 文件打开期间自动设置为只读 * 文件换行符和字符编码转换 * 远程文件直接打开和保存 * 高级的切剪、复制和粘贴 * 高级的移动、累积选择 * BASE64编解码、散列摘要计算和加解密 * 书签 * 导航 * 白字符显示 * 编程语言语法高亮、自动完成和方法浮动提示,语句块折叠展开 * 连接Oracle/MySQL,获取全表字段列表,执行SQL,显示查询结果到表格 * 连接Redis,执行命令,显示查询结果到树 * 配置执行对文件、选择文本的命令 `EditUltra`完全使用`C`用`纯WIN32API`编写而成(v1.0.0.3大约有近2万行代码),又加入了众多优化算法和数据结构,提供了极高的运行效率和较低的系统资源占用,秒开文件,键入时毫秒级弹出自动完成列表。 # 2. 开发历程 作为一名IT人,总喜欢写些东西,无论是源代码还是文章,从Linux C开发,到写博客,从分析爬虫HTML,到存放SQL命令,从字符编码检测,到建立个人技术知识库,都离不开一款轻便的文本编辑器伴我左右。 从大学毕业以来尝试过很多文本编辑器,`UltraEdit`是我使用比较长的一款软件,最新版本的`UltraEdit`带来了很多新功能,但是知名品牌“烈火”却迟迟搞不定Hack,我想,从事软件开发积累多年经验的我难道就不能自己写一个吗,需要什么功能就自己加(真香?),并以开放源代码方式发布,于是拾起大学时代的VC撸起袖子直接开干,先取个名字,不就是对标`UltraEdit`吗,就反过来叫`EditUltra`。 一开始以为基于开源的富文本编辑控件`Scintilla`可以让我的开发工作神速推进,但阅读完其网上贫瘠的中文资料和官网上也不算丰富的英文文档后,才发现它真的只能当作VC工具箱里的一个稍微高级点的控件而已,大量功能都得自己撸,像多文件选项卡的控制(WINDOWS TABS控件不提供鼠标调整位置,自己增强呗)、远程文件直接打开和保存(Linux C开发必需)、自动完成列表的内容管理(`Scintilla`只提供了调用者给定列表、弹出和关闭接口,而不负责列表的筛选、管理等)。 软件开发离不开和数据库等打交道,那么发挥一下想象力(软件开发很需要想象力),文本编辑器内嵌客户端SDK连接上数据库不就能直接执行SQL了吗,避免了大量复制粘贴到数据库客户端软件里的人工操作,而且这年头数据库客户端软件还不便宜,很多看似免费也只是纯个人开发免费,广大企业/公司中开发还是要买许可,那么既然客户端SDK是免费的,就差一个用户界面把她包装一下了。 经过两个半月,每天晚上儿子睡觉后写两个小时(周末也是,白天陪全家出去玩等同于上班),一路斩荆披棘,小步迭代而来,终于从v0.0.0.1到v0.0.43.0,很快跳到v1.0.0.0发布了,还请各位看官多多支持和使用,有问题提issue或发邮件给我,我也将努力保持后续的继续迭代,毕竟现在只实现了基本功能,很多低频功能以及markdown预览、HTML预览等有待于补上。 # 3. 安装 ## 3.1. 绿色安装 **下载、解压绿色包** 目前`EditUltra`只提供64位绿色版,免费下载和使用。 从以下网址可以下载到最新版本,绿色压缩包只有4.5MB [http://114.215.179.129/EditUltra/EditUltra-x64-latest.zip](http://114.215.179.129/EditUltra/EditUltra-x64-latest.zip) 把她放到软件目录中,我一般会放到专门放绿色软件的目录里 ``` D:\Program Files\EditUltra-latest.zip ``` 把里面所有文件解压出来,解压出来只有10MB ``` D:\Program Files\EditUltra\ ``` **运行主程序** 直接运行里面的`editultra.exe`即可启动。 注意: * 如需内嵌`Oracle`客户端功能,还要自行安装`Oracle`,并将WINDOWS环境变量PATH中加入`oci.dll`的所在路径。 * 如需内嵌`MySQL`客户端功能,还要自行安装`MySQL`,并将WINDOWS环境变量PATH中加入`libmysql.dll`的所在路径。 **注册WINDOWS右键文件/目录弹出菜单项** 如果需要在WINDOWS资源管理器中右键菜单增加“打开文件”功能,执行菜单`环境`->`文件右键弹出菜单`。 ![images/EditUltra_file_popupmenu.png](images/EditUltra_file_popupmenu.png) 注册成功后就能在WINDOWS里右键打开文件了。 ![images/EditUltra_explorer_openfile.png](images/EditUltra_explorer_openfile.png) 如果需要在WINDOWS资源管理器中右键菜单增加“打开目录中所有文件”功能,执行菜单`环境`->`目录右键弹出菜单`。 ![images/EditUltra_directory_popupmenu.png](images/EditUltra_directory_popupmenu.png) 注册成功后就能在WINDOWS里右键打开目录中所有文件了。 ![images/EditUltra_explorer_opendirectory.png](images/EditUltra_explorer_opendirectory.png) WINDOWS10操作系统可能会遇到“没有管理员权限”报错,解决方案是右键“以管理员身份运行”`editultra.exe`,再执行以上菜单即可。 ## 3.2. 源码编译安装 如果喜欢折腾,全套源代码在 [https://gitee.com/calvinwilliams/EditUltra](https://gitee.com/calvinwilliams/EditUltra) clone下来,用VS自行编译吧,我用的是`Visual Studio 2019`。 编译前需要安装第三方依赖库:SciLexer、pcre、libcurl、iconv、openssl、MySQL、Oracle、hiredis。 # 4. 功能导览 ## 4.1. 一级菜单"文件" ### 4.1.1. 文件操作 ![images/EditUltra_menu_file.png](images/EditUltra_menu_file.png) 一级菜单下面对文件的操作有`新建`、`打开...`、`打开最近`、`保存`、`另存为...`、`全部保存`、`关闭`、`关闭所有文件`、`关闭除当前外所有文件`。 启用二级菜单`文件变动检测`可在每次文件选项卡选择该文件时自动检查文件是否变动,如果变动则重载文件。 启用二级菜单`打开文件后设置为只读`可在文件编辑期间临时对文件设置只读权限,防止别人打开修改。 ### 4.1.2. 换行符风格 二级菜单`新建文件换行符`设置新建文件时使用的哪个操作系统风格的换行符。二级菜单`全文转换换行符`可在打开文件后调整文件中的换行符风格。换行符风格目前支持`WINDOWS(CR+LF)`、`MAC风格(CR)`、`UNIX/Linux风格(LF)`。 ### 4.1.3. 字符编码 二级菜单`新建文件字符编码`设置新建文件时使用的字符编码。二级菜单`全文转换字符编码`可在打开文件后调整文件中的字符编码。字符编码目前支持`UTF-8`、`GB18030`、`BIG5`。 ### 4.1.4. 远程文件管理器 ![images/EditUltra_remote_file_manager.png](images/EditUltra_remote_file_manager.png) 远程文件管理器用于管理远程服务器地址簿。管理器对话框右边是远程服务器信息,填写完后点击`测试远程文件服务器连接`测试,如果测试通过的话,点击`新建远程文件服务器连接`加到左边列表中,注意`连接名称`中不能包含空格等白字符。`更新远程文件服务器连接`会把右边的信息修改到左边的列表中。左下角的`删除远程文件管理器连接`会删除左边列表中的当前选择项。 每个服务器连接信息对应一个配置文件`conf\rfileser_(连接名称).conf`。 如果`密码`不填的话,会在每次启动后第一次展开`文件资源管理器`中该连接时要求输入密码,如果密码正确成功连接上,后续文件操作无需再输入密码。 ## 4.2. 一级菜单"编辑" ![images/EditUltra_menu_edit.png](images/EditUltra_menu_edit.png) ### 4.2.1. 剪切、复制、粘贴和删除 二级菜单`高级剪切`的三级菜单项`剪切行`用于剪切当前行到剪贴板,无需事前选择,`剪切粘贴行`把当前行移到下一行的下面,剪贴板里遗留一份当前行内容。 二级菜单`高级复制`的三级菜单项`复制行`用于复制当前行到剪贴板,无需事前选择,`复制粘贴行`把当前行向下复制一份,剪贴板里遗留一份当前行内容。 二级菜单`高级粘贴`的三级菜单项`粘贴行`用于把剪贴板里的内容粘贴作为当前行,`往上粘贴行`则是向上粘贴。 二级菜单`高级删除`的三级菜单项`删除行`用于删除当前行,无需事前选择。 ### 4.2.2. 合并行 二级菜单`合并行`把下一行拼接到当前行的末尾,无需事前选择。 ### 4.2.3. 大小写转换 二级菜单`大小写转换`用于对选择文本一起转换为大写或小写。 ### 4.2.4. 启用编辑辅助功能 二级菜单`启用自动补全关闭符号`当在编辑区输入`(`、`[`、`{`、`'`、`"`时自动补全关闭符号,但光标还是定位在输入字符和关闭字符之间。 二级菜单`启用自动缩进`当在编辑区输入回车时,如果当前行左边有白字符(空格、TAB),下一行也会自动加入这些白字符,光标定位在自动补充的白字符后面。 ### 4.2.5. BASE64编解码 `EditUltra`支持用户直接对编辑区选择的文本做BASE64编码,并自动替换原选择文本,编码和解码是可逆的。 ### 4.2.6. 散列/消息摘要 `EditUltra`支持用户直接对编辑区选择的文本做散列/消息摘要,并自动替换原选择文本,摘要算法是不可逆的。目前支持的摘要算法有`MD5`、`SHA1`、`SHA256`。 ### 4.2.7. DES加解密 `EditUltra`支持用户直接对编辑区选择的文本做3DES加解密,弹出对话框输入密钥(24字符,非十六进制展开),加密后按十六进制展开自动替换原选择文本,解密过程同之。 ## 4.3. 一级菜单"搜索" ![images/EditUltra_menu_search.png](images/EditUltra_menu_search.png) ### 4.3.1. 查找和替换 二级菜单`查找...`弹出查找对话框 ![images/EditUltra_find_dialog.png](images/EditUltra_find_dialog.png) 可用`普通文本`或`正则表达式`作为源匹配编辑区的文本,可选项`整词匹配`、`大小写匹配`、`匹配单词开始`决定匹配方式,非模态对话框按钮`查找上一个`、`查找下一个`在不关闭查找对话框时定位编辑区匹配字符串处。 二级菜单`查找下一个`(或快捷键`F3`)、`查找上一个`(或快捷键`Ctrl+F3`)在不打开查找对话框直接匹配定位编辑区查找结果。 二级菜单`替换...`弹出替换对话框 ![images/EditUltra_replace_dialog.png](images/EditUltra_replace_dialog.png) 非模态对话框按钮`替换上一个`、`替换下一个`、`全部替换`在不关闭替换对话框时替换所有编辑区匹配字符串处。 ### 4.3.2. 快速选择 二级菜单`全选`或快捷键`Ctrl+A`选择全文,`选择单词组`或快捷键`Ctrl+W`全选当前位置所在单词,`选择行`或快捷键`Ctrl+L`全选当前位置所在行。 ### 4.3.3. 高级选择 二级菜单`向右累积选择单词`、`向右累积选择单词组`、`累积选择到下一个语句块首行`用于累加调整选择文本。 假如一个变量名由三个单词组成,单词首字母大小,`向右累积选择单词`自动选择从当前位置到单词最后一个字母,`向右累积选择单词组`自动选择从当前位置到变量名结束,`累积选择到下一个语句块首行`自动选择从当前位置到空行分割的下一个语句块首行。 `向左累积选择*`亦然。 ### 4.3.4. 高级移动光标 同上,但是是移动光标,而不是累积选择。 这些操作配备快捷键实现与`vim`同等的快速处理。 ### 4.3.5. 书签管理 二级菜单`书签`提供了对任意打开文件的任意行做行标记,便于事后快速跳跃。 `切换书签`的快捷键是`F9`,`增加书签`的快捷键是`Alt+F9`,`删除书签`的快捷键是`Ctrl+F9`,`删除所有书签`的快捷键是`Ctrl+Shift+F9`。 `跳到上一个书签(当前文件)`的快捷键是`Ctrl+F2`,`跳到下一个书签(当前文件)`的快捷键是`F2`,`跳到上一个书签(所有打开的文件)`的快捷键是`Ctrl+Shift+F2`,`跳到下一个书签(所有打开的文件)`的快捷键是`Shift+F2`。 ### 4.3.6. 导航操作 二级菜单`导航`提供了由于鼠标点击定位而产生的位置链的快速退回功能,比如临时到另外一个文件中去复制一个字符串,然后直接跳回来。 `退回到上一个位置(当前文件)`的快捷键是`Ctrl+Back`,`退回到上一个位置(所有打开的文件)`的快捷键是`Ctrl+Shift+Back`。 ## 4.4. 一级菜单"视图" ![images/EditUltra_menu_view.png](images/EditUltra_menu_view.png) ### 4.4.1. 显示/隐藏文件资源树 二级菜单`文件资源树`用于显示/隐藏主窗口左边的`文件资源管理器`区域。 ### 4.4.2. 调整字体颜色方案 二级菜单`字体颜色方案`用于调整字体颜色方案。 ![images/EditUltra_setfont_dialog.png](images/EditUltra_setfont_dialog.png) `EditUltra`支持编程语言语法高亮、键入时弹出自动完成框、浮动显示语法提示、快速定位到库函数名等符号定义处。`字体颜色方案`对话框左下角为无高亮的普通文本和当前活动行的字体颜色设置,对话框左边为编程语言(C++、Java、Python等)的字体颜色设置,对话框右边为标记语言(HTML、CSS等)的字体颜色设置。 完成支持语言列表见 - [目前支持语法高亮的语言列表](#48-%E7%9B%AE%E5%89%8D%E6%94%AF%E6%8C%81%E8%AF%AD%E6%B3%95%E9%AB%98%E4%BA%AE%E7%9A%84%E8%AF%AD%E8%A8%80%E5%88%97%E8%A1%A8) ### 4.4.3. 显示/隐藏行号/书签 二级菜单`显示行号`、`显示书签`用于显示/隐藏编辑区靠左的辅助区域里的行号、书签等标记。 ### 4.4.4. 显示/隐藏白字符 二级菜单`显示白字符`用于使用可见标记显示空格和TAB,`显示换行符`用于使用可见标记显示换行符,`显示缩进线`用于使用可见标记显示同一缩进行集的缩进竖线。 ### 4.4.5. 缩放 二级菜单`缩放`里面的`放大`和`缩小`用于调大字体显示大小,不影响打印大小,不受字体颜色方案影响。可用`重置缩放`恢复原大小。 ## 4.5. 一级菜单"编程" ![images/EditUltra_menu_source.png](images/EditUltra_menu_source.png) ### 4.5.1. 语句块折叠 二级菜单`启用语句块折叠`用于开启/禁用语句块折叠功能,折叠标记显示在编辑区靠左的辅助区域中。 二级菜单`语句块合拢`和`语句块展开`用于合拢和展开当前层级的语句块,`语句块折叠切换`用于切换合拢和展开。 二级菜单`全部语句块合拢`和`全部语句块展开`用于一键合拢和展开所有层级的语句块。 ### 4.5.2. 源代码符号表 `EditUltra`预置了众多语言的符号提取正则表达式(位于配置文件`conf/doctype_(语言名).conf`中的`symbol_reqular_exp`配置值),匹配出来的符号显示成编辑区右边的符号列表框中,可鼠标左键双击符号直接跳到符号定义处。用户可根据需要,自行修改配置文件以调整匹配式。 二级菜单`跳到符号定义`或快捷键`F11`可直接选定光标所在位置的单词组,从符号列表中查询出编辑区行号,跳到该行。 ### 4.5.3. 自动完成和语法提示 `EditUltra`预置了众多语言的关键字和库函数名,(位于配置文件`conf/doctype_(语言名).conf`中的`autocomplete.set`和`calltip.add`配置值),当用户键入前N个字符时`EditUltra`会根据优化过的算法和数据结构快速筛选出匹配前N个字符的所有`autocomplete.set`组合,弹出自动完成框提供用户选择,当用户键入`(`、`,`时`EditUltra`会根据匹配的`calltip.add`,显示语法提示。个别语言可能会有不同的用户操作差异性,比如HTML的属性名自动完成列表是在用户在标记名后键入空格就自动弹出。用户可根据需要,自行修改配置文件以扩展名字空间。 ![images/EditUltra_autocompleted.png](images/EditUltra_autocompleted.png) ![images/EditUltra_calltip.png](images/EditUltra_calltip.png) ### 4.5.4. 数据库SQL文件 `EditUltra`约定了`.sql`为存放数据库SQL的文本文件,额外的,如果发现文件内容以某一特定注释格式(数据库自动连接配置头)出现,则提取相关信息作为连接数据库的参数,在打开文件完成后自动连接数据库,并获取所有能访问的表名列表以及字段信息列表显示到编辑区右边的符号树框中,用户等待连接完成后可直接选择文件后面的SQL并执行,如果执行的是`SELECT`语句还会把查询结果显示在编辑区下面的表格中。 `Oracle`的数据库自动连接配置头长这个样子: ``` -- EDITULTRA BEGIN DATABASE CONNECTION CONFIG -- DBTYPE : Oracle -- DBHOST : (SIG) -- DBPORT : 0 -- DBUSER : (连接用户名) -- DBPASS : [连接用户密码] -- DBNAME : -- EDITULTRA END DATABASE CONNECTION CONFIG ``` 以下为一个`Oracle`配置示例: ``` -- EDITULTRA BEGIN DATABASE CONNECTION CONFIG -- DBTYPE : Oracle -- DBHOST : CALVINDB -- DBPORT : 0 -- DBUSER : calvin -- DBPASS : -- DBNAME : calvindb -- EDITULTRA END DATABASE CONNECTION CONFIG ``` `MySQL`的数据库自动连接配置头长这个样子: ``` -- EDITULTRA BEGIN DATABASE CONNECTION CONFIG -- DBTYPE : MySQL -- DBHOST : (ip) -- DBPORT : (port) -- DBUSER : (连接用户名) -- DBPASS : [连接用户密码] -- DBNAME : (库名) -- EDITULTRA END DATABASE CONNECTION CONFIG ``` 以下为一个`MySQL`配置示例: ``` -- EDITULTRA BEGIN DATABASE CONNECTION CONFIG -- DBTYPE : MySQL -- DBHOST : 127.0.0.1 -- DBPORT : 3306 -- DBUSER : calvin -- DBPASS : calvin -- DBNAME : calvindb -- EDITULTRA END DATABASE CONNECTION CONFIG ``` 注意:连接用户密码可不配置,在每次连接数据库时会提示输入,如果连接成功后面会记住密码,直到程序结束。 `数据库自动连接配置头`比较难记,二级菜单`插入数据库自动连接配置头`可直接插入配置模板到当前SQL文件中,所以不用刻意去记她,不过每个配置项的含义和用法还是要记忆的。 二级菜单`执行选定SQL`或快捷键`F5`用于执行选定的SQL语句。 ### 4.5.5. REDIS文件 `REDIS自动连接配置头`以及一键执行同数据库。 ## 4.6. 一级菜单"环境" ![images/EditUltra_menu_env.png](images/EditUltra_menu_env.png) ### 4.6.1. WINDOWS资源管理器右键菜单 二级菜单`文件右键弹出菜单`用于向WINDOWS资源管理器右键菜单注册/卸载`用 EditUltra 打开文件`菜单项。 二级菜单`目录右键弹出菜单`用于向WINDOWS资源管理器右键菜单注册/卸载`用 EditUltra 打开目录中所有文件`菜单项。 注意:在WINDOWS10操作系统中执行以上两个菜单项需要管理员权限,可重新以管理员身份启动`EditUltra`主程序。 ### 4.6.2. 处理当前文件和当前选择文本的命令 `EditUltra`允许自定义格式命令用于一键处理当前文件或当前编辑区选择文本。 二级菜单`配置处理文件的命令`用于配置处理当前文件的格式命令,用`%F`占位文件名,`执行处理文件的命令`用于执行该命令。 二级菜单`配置处理选定文本的命令`用于配置处理当前选定文本的格式命令,用`%T`占位选定文本,`执行处理选定文本的命令`用于执行该命令,比如打开浏览器提交选定文本为关键字给搜索引擎。 ## 4.7. 一级菜单"帮助" ![images/EditUltra_menu_help.png](images/EditUltra_menu_help.png) 执行二级菜单`关于`展示`EditUltra`软件版权和引用第三方库列表。 ![images/EditUltra_version.png](images/EditUltra_version.png) ## 4.8. 目前支持语法高亮的语言列表 | 语言 | 语法高亮 | 自动完成列表 | 语法提示 | 符号列表与快速定位 | | --- | --- | --- | --- | --- | | TXT | - | - | - | - | | C/C++ | 有 | 有 | 有 | 有 | | C# | 有 | 有 | - | 有 | | Java | 有 | 有 | - | 有 | | JavaScript | 有 | 有 | - | 有 | | golang | 有 | 有 | - | 有 | | SWIFT | 有 | 有 | - | 有 | | SQL | 有 | 有 | 有 | 有 | | Redis | 有 | 有 | - | 有 | | Python | 有 | 有 | 有 | 有 | | Lua | 有 | 有 | 有 | 有 | | Perl | 有 | - | - | 有 | | Sh/Bash | 有 | - | - | 有 | | Rust | 有 | - | - | 有 | | Ruby | 有 | - | - | 有 | | Lisp | 有 | - | - | 有 | | Asm | 有 | 有 | - | 有 | | Cobol | 有 | 有 | - | 有 | | HTML | 有 | 有 | - | - | | XML | 有 | - | - | - | | CSS | 有 | 有 | - | - | | JSON | 有 | - | - | - | | YAML | 有 | - | - | - | | Makefile | 有 | - | - | - | | CMake | 有 | 有 | - | - | 目前已支持25种编程语言和标记语言,每种语言的配置文件为`conf/doctype_(语言名).conf`,一般`keywords.set`配置为语法高亮单词列表,`keywords2.set`配置为库函数等第三方符号列表,`autocomplete.set`配置为键入时弹出自动完成单词列表,`calltip.add`为浮动显示语法提示文本,`symbol_reqular_exp`为正则表达式匹配源代码出符号表放到编辑区右边列表框供鼠标左键双击后直接跳到定义处行。 今后还将继续完善已有语言未实现功能,也将增加更多语言,也欢迎大家把急需的语言告知我优先添加,更欢迎大家帮我添加后PR我,谢谢。 ## 4.9. 启动速度评测 CPU : i5-7500 3.4GHz 内存 : 16GB 操作系统 : WINDOWS 10 测试说明 : 操作系统启动后,右键测试文本文件弹出菜单中选择打开约28KB大小的文件。 | - | 首次启动耗时 | 非首次启动耗时 | | --- | --- | --- | | EditUltra | 2秒 | 0.5秒 | | UltraEdit | 5秒 | 1秒 | | VSCode | 8秒 | 2秒 | # 5. 最后 `EditUltra`,中国人开发开源的小巧快速又功能丰富的文本/源码编辑器(内嵌数据库客户端、Redis客户端)。 欢迎使用`EditUltra`,如果你使用中碰到了问题请提issue或发邮件告诉我,谢谢 ^\_^ 源码托管地址 : [开源中国](https://gitee.com/calvinwilliams/EditUltra) 关于作者:厉华,左手C,右手JAVA,写过小到性能卓越方便快捷的日志库、HTTP解析器、日志采集器等,大到交易平台/中间件等,分布式系统实践者,容器技术专研者,目前在某城商行负责基础架构。 通过邮箱可以联系我 : [网易](mailto:calvinwilliams@163.com)、[Gmail](mailto:calvinwilliams.c@gmail.com)