1 Star 0 Fork 159

dev4app / EUX

forked from calvinwilliams / EUX 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
Apache-2.0

EUX - 中国人开发开源的性能卓越的文本/源码编辑器(内嵌数据库客户端功能和Redis客户端功能)

1. 引子

你正在寻找一款类似UltraEdit强大但免费的文本/源码文件编辑器吗?

你想要一个秒开的开发环境吗?

你还在挑选免费、好用的数据库/Redis图形客户端吗?

向您推荐EUX=文本/源码文件编辑器+数据库客户端+Redis客户端。

2. 概述

2.1. EUX是什么?

EUX是中国人开发开源的性能卓越的文本/源码文件(内嵌数据库客户端功能和Redis客户端功能),她基于开源的富文本编辑控件Scintilla,自研大量功能,构建出一套完整的文本/源码文件编辑软件,覆盖日常生活工作和源代码编写基本功能,此外EUX还能直接提交文本文件里的SQL发给数据库,直接提交Redis命令给Redis服务端。整个软件只有10MB(不包含数据库客户端库),小巧但文本编辑功能完整,且性能卓越,几乎秒开文件,不像VS或VSCODE总是慢半拍。

EUX为追求极致的性能体验和极小的系统资源占用,完全使用C纯WIN32 API编写而成(v1.0.0.3大约有近2万行代码),又加入了众多优化算法和数据结构,在低端硬件配置上也能飞起。

EUX是开源的,任何人都能在其源码托管站点上审阅、下载和学习全部源代码;EUX是免费的,任何人无需付费就能使用到全部软件功能;EUX是国产软件,如果你有问题反馈或需求提议,可以通过源码托管站点提issue或写电子邮件直接用中文与作者联系沟通。

images/EUX_hello.png

2.2. 功能列表

(包含但不限于)

  • 多文件选项卡;
  • WINDOWS资源管理器右键菜单打开文件、目录中所有文件、展开定位到目录树框,还支持目录/文件的创建、改名、删除等;
  • 通过SFTP协议远程打开文件,还支持远程目录/文件的创建、改名、删除等;
  • 检测文件变动实时重载;
  • 文件打开期间自动设置为只读;
  • 文件换行符和字符编码转换;
  • 高级的切剪、复制和粘贴;
  • 查找和替换、一键列出包含关键字行列表(就像grep XXX a.c一样)、自动打开文件所在目录中其他拥有搜索字符串的未打开的文件(就像grep XXX *.*一样);
  • 一键快速选择单词、行;
  • 高级移动;
  • 高级的累积选择、多位置同步操作、多文本块选择、列选择;
  • 选定文本后自动高亮上下文中相同文本;
  • BASE64编解码、散列摘要计算和加解密;
  • 书签;
  • 导航;
  • 白字符显示;
  • 编程语言语法高亮、自动完成和方法浮动提示,语句块折叠展开;
  • 多字体颜色主题方案支持;
  • 连接数据库,获取表、字段列表,单行或批量执行SQL,显示查询结果到表格控件中;输入时自动弹出当前库的表、字段列表、SQL语法提示;目前支持OracleMySQLPostgreSQLSqlite3
  • 连接Redis,单行或批量执行命令,显示查询结果到树控件中;输入时自动弹出Redis命令语法提示;
  • 打开JSON/XML文件后解析结构到右边树控件中,按需手动刷新解析;
  • 配置执行对文件、选择文本的命令;

2.3. 特色功能图示

不仅可以在WIDNOWS资源管理器里右键打开文件或打开目录中所有文件,还能定位目录到软件内置目录文件树中,方便后续在软件直接管理目录/文件 images/EUX_locateforder_in_filetree.png images/EUX_locateforder_in_filetree_2.png

在软件里的目录/文件中直接打开、管理本地/远程文件 images/EUX_filetree_popupmenu.png images/EUX_remotefiletree_popupmenu.png

选择文本,按Ctrl+Shift+F3自动列出包含该文本的行列表(就像grep XXX a.c一样),双击列表定位到原文件中 images/EUX_search_grep.png

查找文本时选择"文件所在目录中已支持类型的文件",按"查找下一个",自动搜索当前文件所在目录中包含搜索字符串的其他未打开文件,打开之(就像grep XXX *.*一样) images/EUX_search_grep2.png

按Ctrl+W自动选择光标所在整个单词;按Ctrl+L自动选择当前行 images/EUX_select_word.png images/EUX_select_line.png

按Ctrl+鼠标左击可以选择非相邻多段文本,然后Ctrl+C拼接复制 images/EUX_multiselect.png

按Ctrl+鼠标左击可以生成多个同时操作位置点,后续可以多点同时键入、删除等操作 images/EUX_syncoper.png

无需切换模式,按Alt+鼠标左键拖动即可直接列选择 images/EUX_columnselect.png

选定某文本后,上下文中相同文本自动高亮 images/EUX_indicator_highlight.png

显示空格、制表符、换行等白字符 images/EUX_view_whitespace_visiable.png

键入源代码时自动弹出完成列表和函数/方法语法提示(预配置信息有待继续完善) images/EUX_autocompleted.png images/EUX_calltip.png

打开.sql文件,根据文件头配置自动连接上数据库,右侧树控件中自动列出所有能访问的表、以及表字段清单,选择SQL按F5直接提交数据库执行,查询结果集回显在最下方表格控件中,还可以按Ctrl+F5自动选择光标所在完整SQL语句并执行,还可以全选批量依次执行文本文件中所有SQL;输入SQL时支持自动弹出SQL关键词、当前库的表名、字段名自动完成框、语法提示 images/EUX_database_client.png

打开.redis文件,根据文件头配置自动连接上Redis服务端,选择Redis命令按F5直接提交执行,查询结果集回显在右方树控件中,还可以按Ctrl+F5自动选择光标所在完整Redis命令语句并执行,还可以全选批量依次执行文本文件中所有Redis命令;输入Redis时支持自动弹出Redis关键词自动完成框、语法提示 images/EUX_redis_client.png

打开JSON、XML文件时,右侧树控件中自动显示解析出来的文档结构,双击右侧文档结构某元素,左侧自动定位到该标记开始处 images/EUX_filetype_json_parsetree.png images/EUX_filetype_xml_parsetree.png

3. 开发历程

作为一名IT人,总喜欢写些东西,无论是源代码还是文章,从Linux C开发,到写博客,从分析爬虫HTML,到存放SQL命令,从字符编码检测,到建立个人技术知识库,都离不开一款轻便的文本编辑器伴我左右。我认为一款好的文本/源码编辑器,必须要—————快,如果启动要花2秒以上基本可以弃用了,人脑怎么能等电脑呢。

从大学毕业以来尝试过很多文本编辑器,UltraEdit是我使用比较长的一款软件,最新版本的UltraEdit带来了很多新功能,但是知名品牌“烈火”却迟迟搞不定Hack,我想,从事软件开发积累多年经验的我难道就不能自己写一个吗,需要什么功能就自己加(真香?),并以开放源代码方式发布,于是拾起大学时代的VC撸起袖子直接开干,先取个名字,就叫EUX吧。

一开始以为基于开源的富文本编辑控件Scintilla可以让我的开发工作神速推进,但阅读完其网上贫瘠的中文资料和官网上也不算丰富的英文文档后,才发现它真的只能当作VC工具箱里的一个稍微高级点的控件而已,大量功能都得自己撸,像多文件选项卡的控制(WINDOWS TABS控件不提供鼠标调整位置,自己增强呗)、远程文件直接打开和保存(Linux C开发必需)、自动完成列表的内容管理(Scintilla只提供了调用者给定列表、弹出和关闭接口,而不负责列表的筛选、管理等,如果不精心设计数据结构和算法,反馈体验会很慢)。

软件开发离不开和数据库等打交道,那么发挥一下想象力(好的软件需要想象力),文本编辑器内嵌客户端SDK连接数据库不就能直接执行SQL了吗,避免了大量复制粘贴到数据库客户端软件里的人工操作,而且这年头数据库客户端软件还不便宜,很多看似免费也只是纯个人开发免费,企业/公司中开发还是要买许可,那么既然客户端SDK是免费的,就差一个用户界面把她包装一下了。

经过两个半月,每天晚上写两个小时(周末也是,白天陪全家出去玩等同于上班),一路斩荆披棘,小步迭代而来,终于从v0.0.0.1到v0.0.43.0,很快跳到v1.1.0.0发布了,还请各位看官多多支持和使用,有问题提issue或发邮件给我,我也将努力保持后续的继续迭代,毕竟现在只实现了基本功能,很多低频功能有待于补上。

4. 安装

4.1. 绿色安装

下载、解压绿色包

目前,EUX提供WINDOWS(64位/32位)绿色版,免费下载和使用。

EUX版本号格式为:(主版本号).(兼容版本号).(功能版本号).(补丁版本号)

EUX安装包文件名格式为:("EUX")-(版本号/最新版"latest")-("x86"/"x64")-(绿色版"noinstall"/安装版"install")-(完整包"full"/更新包"update-based-z.y.x.x"配置文件兼容版本z.y.x.x)

从以下网址可以查询最新版本更新信息:

http://114.215.179.129/EUX/ChangeLog-CN

从以下网址可以下载到最新版本:

包含可执行文件和初始配置文件的64位绿色包完整版

http://114.215.179.129/EUX/EUX-x64-latest-noinstall-full.zip

只包含可执行文件、不包含配置文件的64位绿色包补丁版

http://114.215.179.129/EUX/EUX-x64-latest-noinstall-update-based-v1.1.x.x.zip

包含可执行文件和初始配置文件的32位绿色包完整版

http://114.215.179.129/EUX/EUX-x86-latest-noinstall-full.zip

只包含可执行文件、不包含配置文件的32位绿色包补丁版

http://114.215.179.129/EUX/EUX-x86-latest-noinstall-update-based-v1.1.x.x.zip

同时,所有类型、历史版本在这里

http://114.215.179.129/EUX/

第一次下载完整版,以后下载更新版(防止修改后的配置文件被覆盖),把她放到软件目录中,我一般会放到专门放绿色软件的目录里

D:\Program Files\EUX-x64-latest-noinstall-full.zip

把里面所有文件解压出来,解压出来只有10MB

D:\Program Files\EUX\

运行主程序

直接运行里面的EUX.exe即可启动。

注意:

  • 如需内嵌Oracle客户端功能,须自行安装Oracle,并将WINDOWS环境变量PATH中加入oci.dll的所在路径。
  • 如需内嵌MySQL客户端功能,须自行安装MySQL,并将WINDOWS环境变量PATH中加入libmysql.dll的所在路径。
  • 如需内嵌PostgreSQL客户端功能,须自行安装PostgreSQL,并将WINDOWS环境变量PATH中加入libpq.dll的所在路径。

注册WINDOWS右键文件/目录弹出菜单项

如果需要在WINDOWS资源管理器中右键菜单增加“打开文件”功能,执行菜单环境->文件右键弹出菜单

images/EUX_file_popupmenu.png

注册成功后就能在WINDOWS里右键打开文件了。

images/EUX_explorer_openfile.png

如果需要在WINDOWS资源管理器中右键菜单增加“打开目录中所有文件”功能,执行菜单环境->目录右键弹出菜单

images/EUX_directory_popupmenu.png

注册成功后就能在WINDOWS里右键打开目录中所有文件了。

images/EUX_explorer_opendirectory.png

WINDOWS10操作系统可能会遇到“没有管理员权限”报错,解决方案是右键“以管理员身份运行”EUX.exe,再执行以上菜单即可。

4.2. 源码编译安装

如果喜欢折腾,全套源代码在

https://gitee.com/calvinwilliams/EUX

clone下来,用VS自行编译吧,我用的是Visual Studio 2019

编译前需要安装第三方依赖库:SciLexer、pcre、libcurl、iconv、openssl、MySQL、Oracle、PostgreSQL、hiredis。

5. 功能导览

5.1. 一级菜单"文件"

5.1.1. 文件操作

images/EUX_menu_file.png

一级菜单下面对文件的操作有新建打开...打开最近保存另存为...全部保存关闭关闭所有文件关闭除当前外所有文件

启用二级菜单文件变动检测可在每次文件选项卡选择该文件时自动检查文件是否变动,如果变动则重载文件。

启用二级菜单打开文件后设置为只读可在文件编辑期间临时对文件设置只读权限,防止别人打开修改。

5.1.2. 换行符风格

二级菜单新建文件换行符设置新建文件时使用的哪个操作系统风格的换行符。二级菜单全文转换换行符可在打开文件后调整文件中的换行符风格。换行符风格目前支持WINDOWS(CR+LF)MAC风格(CR)UNIX/Linux风格(LF)

5.1.3. 字符编码

二级菜单新建文件字符编码设置新建文件时使用的字符编码。二级菜单全文转换字符编码可在打开文件后调整文件中的字符编码。字符编码目前支持UTF-8GB18030BIG5

5.1.4. 远程文件管理器

images/EUX_remote_file_manager.png

远程文件管理器用于管理远程服务器地址簿。管理器对话框右边是远程服务器信息,填写完后点击测试远程文件服务器连接测试,如果测试通过的话,点击新建远程文件服务器连接加到左边列表中,注意连接名称中不能包含空格等白字符。更新远程文件服务器连接会把右边的信息修改到左边的列表中。左下角的删除远程文件管理器连接会删除左边列表中的当前选择项。

每个服务器连接信息对应一个配置文件conf\rfileser_(连接名称).conf

如果密码不填的话,会在每次启动后第一次展开文件资源管理器中该连接时要求输入密码,如果密码正确成功连接上,后续文件操作无需再输入密码。

5.2. 一级菜单"编辑"

images/EUX_menu_edit.png

5.2.1. 剪切、复制、粘贴和删除

二级菜单高级剪切的三级菜单项剪切行用于剪切当前行到剪贴板,无需事前选择,剪切粘贴行把当前行移到下一行的下面,剪贴板里遗留一份当前行内容。

二级菜单高级复制的三级菜单项复制行用于复制当前行到剪贴板,无需事前选择,复制粘贴行把当前行向下复制一份,剪贴板里遗留一份当前行内容。

二级菜单高级粘贴的三级菜单项粘贴行用于把剪贴板里的内容粘贴作为当前行,往上粘贴行则是向上粘贴。

二级菜单高级删除的三级菜单项删除行用于删除当前行,无需事前选择。

5.2.2. 合并行

二级菜单合并行把下一行拼接到当前行的末尾,无需事前选择。

5.2.3. 大小写转换

二级菜单大小写转换用于对选择文本一起转换为大写或小写。

5.2.4. 启用编辑辅助功能

二级菜单启用自动补全关闭符号当在编辑区输入([{'"时自动补全关闭符号,但光标还是定位在输入字符和关闭字符之间。

二级菜单启用自动缩进当在编辑区输入回车时,如果当前行左边有白字符(空格、TAB),下一行也会自动加入这些白字符,光标定位在自动补充的白字符后面。

5.2.5. BASE64编解码

EUX支持用户直接对编辑区选择的文本做BASE64编码,并自动替换原选择文本,编码和解码是可逆的。

5.2.6. 散列/消息摘要

EUX支持用户直接对编辑区选择的文本做散列/消息摘要,并自动替换原选择文本,摘要算法是不可逆的。目前支持的摘要算法有MD5SHA1SHA256

5.2.7. DES加解密

EUX支持用户直接对编辑区选择的文本做3DES加解密,弹出对话框输入密钥(24字符,非十六进制展开),加密后按十六进制展开自动替换原选择文本,解密过程同之。

5.3. 一级菜单"搜索"

images/EUX_menu_search.png

5.3.1. 查找和替换

二级菜单查找...弹出查找对话框

images/EUX_find_dialog.png

可用普通文本正则表达式作为源匹配编辑区的文本,可选项整词匹配大小写匹配匹配单词开始决定匹配方式,非模态对话框按钮查找上一个查找下一个在不关闭查找对话框时定位编辑区匹配字符串处。

二级菜单查找下一个(或快捷键F3)、查找上一个(或快捷键Ctrl+F3)在不打开查找对话框直接匹配定位编辑区查找结果。

二级菜单替换...弹出替换对话框

images/EUX_replace_dialog.png

非模态对话框按钮替换上一个替换下一个全部替换在不关闭替换对话框时替换所有编辑区匹配字符串处。

5.3.2. 快速选择

二级菜单全选或快捷键Ctrl+A选择全文,选择单词组或快捷键Ctrl+W全选当前位置所在单词,选择行或快捷键Ctrl+L全选当前位置所在行。

5.3.3. 高级选择

二级菜单向右累积选择单词向右累积选择单词组累积选择到下一个语句块首行用于累加调整选择文本。

假如一个变量名由三个单词组成,单词首字母大小,向右累积选择单词自动选择从当前位置到单词最后一个字母,向右累积选择单词组自动选择从当前位置到变量名结束,累积选择到下一个语句块首行自动选择从当前位置到空行分割的下一个语句块首行。

向左累积选择*亦然。

EUX支持定位多个位置或选择多个文本块,联动操作:输入、退格键、删除、复制等,快捷键为Ctrl+MouseLButtonClick或Ctrl+MouseLButtonDown+MouseMove+MouseLButtonUp+...。

比如拼接复制

images/EUX_multiselect.png

比如在HTML的TD中同时设置class

images/EUX_syncoper.png

EUX支持列选择,联动操作:输入、退格键、删除、复制等,快捷键为Alt+MouseLButton+MouseMove或Alt+Shift+Left/Right/Up/Down。

images/EUX_columnselect.png

作为一个合格的文本/源码编辑器,也支持选定文本后,自动高亮上下中相同的文本

images/EUX_indicator_highlight.png

5.3.4. 高级移动光标

同上,但是是移动光标,而不是累积选择。

这些操作配备快捷键实现与vim同等的快速处理。

5.3.5. 书签管理

二级菜单书签提供了对任意打开文件的任意行做行标记,便于事后快速跳跃。

切换书签的快捷键是F9增加书签的快捷键是Alt+F9删除书签的快捷键是Ctrl+F9删除所有书签的快捷键是Ctrl+Shift+F9

跳到上一个书签(当前文件)的快捷键是Ctrl+F2跳到下一个书签(当前文件)的快捷键是F2跳到上一个书签(所有打开的文件)的快捷键是Ctrl+Shift+F2跳到下一个书签(所有打开的文件)的快捷键是Shift+F2

5.3.6. 导航操作

二级菜单导航提供了由于鼠标点击定位而产生的位置链的快速退回功能,比如临时到另外一个文件中去复制一个字符串,然后直接跳回来。

退回到上一个位置(当前文件)的快捷键是Ctrl+Back退回到上一个位置(所有打开的文件)的快捷键是Ctrl+Shift+Back

5.4. 一级菜单"视图"

images/EUX_menu_view.png

5.4.1. 显示/隐藏文件资源树

二级菜单文件资源树用于显示/隐藏主窗口左边的文件资源管理器区域。

5.4.2. 选择语言高亮

二级菜单选择语言高亮用于文件打开后调整文件类型,切换关键词高亮。不过这是临时性的,永久性的做法是在语法高亮配置文件中添加键值,以指定文件类型对应文件扩展名串。

如SQL文件扩展名为";*.sql;",希望增加一个文件扩展名.prc,加上或修改

file.extnames = ";*.sql;*.prc;"

注意格式,前后各一个';',中间是统配表达式集合,多个统配表达式中间也用';'分隔。

5.4.3. 选择主题方案

二级菜单选择主题方案用于在预置的主题方案中挑一个。

5.4.4. 修改主题方案

二级菜单修改主题方案用于切换软件启动时装载的主题方案,conf\styletheme.conf是默认主题方案,然后此次是conf\styletheme_*.conf,如果要在软件里新增,执行二级菜单复制创建主题方案将复制当前主题方案到指定名字的新自定义主题方案,并写主题方案配置文件conf\styletheme_(新名字).conf

二级菜单修改主题方案用于调整字体颜色方案。

images/EUX_setfont_dialog.png

EUX支持编程语言语法高亮、键入时弹出自动完成框、浮动显示语法提示、快速定位到库函数名等符号定义处。字体颜色方案对话框左下角为无高亮的普通文本和当前活动行的字体颜色设置,对话框左边为编程语言(C++、Java、Python等)的字体颜色设置,对话框右边为标记语言(HTML、CSS等)的字体颜色设置。

字体颜色方案配置文件在conf/styletheme.conf,欢迎大家制作更好看的颜色方案发我,谢谢。

完成支持语言列表见

5.4.5. 复制创建主题

二级菜单复制主题方案用于从当前主题方案复制成新的自定义的主题方案,然后自由修改主题方案。

5.4.6. 显示/隐藏行号/书签

二级菜单显示行号显示书签用于显示/隐藏编辑区靠左的辅助区域里的行号、书签等标记。

5.4.7. 显示/隐藏白字符

二级菜单显示白字符用于使用可见标记显示空格和TAB,显示换行符用于使用可见标记显示换行符,显示缩进线用于使用可见标记显示同一缩进行集的缩进竖线。

5.4.8. 缩放

二级菜单缩放里面的放大缩小用于调大字体显示大小,不影响打印大小,不受字体颜色方案影响。可用重置缩放恢复原大小。

5.5. 一级菜单"编程"

images/EUX_menu_source.png

5.5.1. 语句块折叠

二级菜单启用语句块折叠用于开启/禁用语句块折叠功能,折叠标记显示在编辑区靠左的辅助区域中。

二级菜单语句块合拢语句块展开用于合拢和展开当前层级的语句块,语句块折叠切换用于切换合拢和展开。

二级菜单全部语句块合拢全部语句块展开用于一键合拢和展开所有层级的语句块。

5.5.2. 源代码符号表

EUX预置了众多语言的符号提取正则表达式(位于配置文件conf/doctype_(语言名).conf中的symbol_reqular_exp配置值),匹配出来的符号显示成编辑区右边的符号列表框中,可鼠标左键双击符号直接跳到符号定义处。用户可根据需要,自行修改配置文件以调整匹配式。

二级菜单跳到符号定义或快捷键F11可直接选定光标所在位置的单词组,从符号列表中查询出编辑区行号,跳到该行。

5.5.3. 自动完成和语法提示

EUX预置了众多语言的关键字和库函数名,(位于配置文件conf/doctype_(语言名).conf中的autocomplete.setcalltip.add配置值),当用户键入前N个字符时EUX会根据优化过的算法和数据结构快速筛选出匹配前N个字符的所有autocomplete.set组合,弹出自动完成框提供用户选择,当用户键入(,EUX会根据匹配的calltip.add,显示语法提示。个别语言可能会有不同的用户操作差异性,比如HTML的属性名自动完成列表是在用户在标记名后键入空格就自动弹出。用户可根据需要,自行修改配置文件以扩展名字空间。

images/EUX_autocompleted.png

images/EUX_calltip.png

5.5.4. 数据库SQL文件

如需使用EUX数据库客户端功能,须额外安装数据库客户端库,WINDOWS环境变量PATH指向库文件(如MySQLlibmysql.dll)所在目录,EUX在打开.sql时会根据配置头动态装载相关动态库。

EUX目前支持的数据库有OracleMySQLPostgreSQLSqlite3

EUX约定了.sql为存放数据库SQL的文本文件,额外的,如果发现文件内容以某一特定注释格式(数据库自动连接配置头)出现,则提取相关信息作为连接数据库的参数,在打开文件完成后自动连接数据库,并获取所有能访问的表名列表以及字段信息列表显示到编辑区右边的符号树框中,用户等待连接完成后可直接选择文件后面的SQL并执行,如果执行的是SELECT语句还会把查询结果显示在编辑区下面的表格中。

images/EUX_database_client.png

Oracle的数据库自动连接配置头长这个样子:

-- EUX BEGIN DATABASE CONNECTION CONFIG
--  DBTYPE : Oracle
--  DBHOST : (SIG)
--  DBPORT : 0
--  DBUSER : (连接用户名)
--  DBPASS : [连接用户密码]
--  DBNAME : 
-- EUX END DATABASE CONNECTION CONFIG

以下为一个Oracle配置示例:

-- EUX BEGIN DATABASE CONNECTION CONFIG
--  DBTYPE : Oracle
--  DBHOST : CALVINDB
--  DBPORT : 0
--  DBUSER : calvin
--  DBPASS : 
--  DBNAME : calvindb
-- EUX END DATABASE CONNECTION CONFIG

MySQL的数据库自动连接配置头长这个样子:

-- EUX BEGIN DATABASE CONNECTION CONFIG
--  DBTYPE : MySQL
--  DBHOST : (ip)
--  DBPORT : (port)
--  DBUSER : (连接用户名)
--  DBPASS : [连接用户密码]
--  DBNAME : (库名)
-- EUX END DATABASE CONNECTION CONFIG

以下为一个MySQL配置示例:

-- EUX BEGIN DATABASE CONNECTION CONFIG
--  DBTYPE : MySQL
--  DBHOST : 127.0.0.1
--  DBPORT : 3306
--  DBUSER : calvin
--  DBPASS : calvin
--  DBNAME : calvindb
-- EUX END DATABASE CONNECTION CONFIG

Sqlite3的数据库自动连接配置头长这个样子:

-- EUX BEGIN DATABASE CONNECTION CONFIG
--  DBTYPE : Sqlite3
--  DBHOST : 
--  DBPORT : 
--  DBUSER : 
--  DBPASS : 
--  DBNAME : (sqlite3路径文件名)
-- EUX END DATABASE CONNECTION CONFIG

以下为一个Sqlite3配置示例:

-- EUX BEGIN DATABASE CONNECTION CONFIG
--  DBTYPE : Sqlite3
--  DBHOST : 
--  DBPORT : 
--  DBUSER : 
--  DBPASS : 
--  DBNAME : D:\Program Files\test_EUX.sqlite
-- EUX END DATABASE CONNECTION CONFIG

PostgreSQL的数据库自动连接配置头长这个样子:

-- EUX BEGIN DATABASE CONNECTION CONFIG
--  DBTYPE : PostgreSQL
--  DBHOST : (ip)
--  DBPORT : (port)
--  DBUSER : (连接用户名)
--  DBPASS : [连接用户密码]
--  DBNAME : (库名)
-- EUX END DATABASE CONNECTION CONFIG

以下为一个PostgreSQL配置示例:

-- EUX BEGIN DATABASE CONNECTION CONFIG
--  DBTYPE : PostgreSQL
--  DBHOST : 127.0.0.1
--  DBPORT : 5432
--  DBUSER : postgres
--  DBPASS : postgres
--  DBNAME : calvindb
-- EUX END DATABASE CONNECTION CONFIG

注意:DBHOST支持解析域名。 注意:连接用户密码可不配置,在每次连接数据库时会提示输入,如果连接成功后面会记住密码,直到程序结束。

数据库自动连接配置头比较难记,二级菜单插入数据库自动连接配置头可直接插入配置模板到当前SQL文件中,所以不用刻意去记她,不过每个配置项的含义和用法还是要记忆的。

二级菜单执行选定SQL或快捷键F5用于执行选定的SQL语句。

注意:右侧表/字段清单、键入表/字段名自动完成列表不会实时追加,需要右键右侧表/字段树点击"刷新"才会同步。

5.5.5. REDIS文件

REDIS自动连接配置头以及一键执行同数据库。

images/EUX_redis_client.png

5.6. 一级菜单"环境"

images/EUX_menu_env.png

5.6.1. WINDOWS资源管理器右键菜单

二级菜单文件右键弹出菜单用于向WINDOWS资源管理器右键菜单注册/卸载用 EUX 打开文件菜单项。

二级菜单目录右键弹出菜单用于向WINDOWS资源管理器右键菜单注册/卸载用 EUX 打开目录中所有文件菜单项。

注意:在WINDOWS10操作系统中执行以上两个菜单项需要管理员权限,可重新以管理员身份启动EUX主程序。

5.6.2. 处理当前文件和当前选择文本的命令

EUX允许自定义格式命令用于一键处理当前文件或当前编辑区选择文本。

二级菜单配置处理文件的命令用于配置处理当前文件的格式命令,用%F占位文件名,执行处理文件的命令用于执行该命令。

二级菜单配置处理选定文本的命令用于配置处理当前选定文本的格式命令,用%T占位选定文本,执行处理选定文本的命令用于执行该命令,比如打开浏览器提交选定文本为关键字给搜索引擎。

5.7. 一级菜单"帮助"

images/EUX_menu_help.png

执行二级菜单关于展示EUX软件版权和引用第三方库列表。

images/EUX_version.png

5.8. 目前支持语法高亮的语言列表

语言 语法高亮 自动完成列表 语法提示 符号列表与快速定位
TXT - - - -
C/C++
C# -
Java -
JavaScript -
golang -
SWIFT -
SQL
Redis -
Python
Lua
Perl - -
Sh/Bash - -
Rust - -
Ruby - -
Lisp - -
Asm -
Cobol -
HTML - -
ASP - -
PHP - -
VBA - -
XML - - -
CSS - -
JSON - - -
YAML - - -
Makefile - - -
CMake - -
LOG - - -

注意:LOG文件扩展名为"*.log",对"TRACE"、"DEBUG"、"INFO"显示为keyword风格,"WARN"、"ERROR"、"FATAL"显示为unknow_tag风格。

目前已支持28种编程语言和标记语言,每种语言的配置文件为conf/doctype_(语言名).conf,一般keywords.set配置为语法高亮单词列表,keywords2.set配置为库函数等第三方符号列表,autocomplete.set配置为键入时弹出自动完成单词列表,calltip.add为浮动显示语法提示文本,symbol_reqular_exp为正则表达式匹配源代码出符号表放到编辑区右边列表框供鼠标左键双击后直接跳到定义处行。

今后还将继续完善已有语言未实现功能,也将增加更多语言,也欢迎大家把急需的语言告知我优先添加,更欢迎大家帮我添加后PR我,谢谢。

5.9. 启动速度评测

CPU : i5-7500 3.4GHz 内存 : 16GB 操作系统 : WINDOWS 10 测试说明 : 操作系统启动后,右键测试文本文件弹出菜单中选择打开约28KB大小的文件。

- 首次启动耗时 非首次启动耗时
EUX 2秒 0.5秒
UltraEdit 5秒 1秒
VSCode 8秒 2秒

6. 最后

EUX,中国人开发开源的小巧快速又功能丰富的文本/源码编辑器(内嵌数据库客户端、Redis客户端)。

images/EUX_hello.png

欢迎使用EUX,如果你使用中碰到了问题请提issue或发邮件告诉我,也欢迎帮忙补充自动完成列表、函数/方法语法提示、制作更好的颜色主题给我,谢谢 ^_^

源码托管地址 : 开源中国

关于作者:厉华,成长在杭州,求学在杭州,工作在杭州,左手C,右手JAVA,写过小到性能卓越方便快捷的日志库、HTTP解析器、日志采集器等,大到交易平台/中间件等,分布式系统实践者,容器技术专研者,2003年大学毕业后一直从事Linux中后台开发,目前在某城市商业银行负责基础架构。

通过邮箱可以联系我 : 网易Gmail

Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

简介

中国人开发开源的性能卓越的文本/源码编辑器+数据库客户端+Redis客户端 展开 收起
C++
Apache-2.0
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
C++
1
https://gitee.com/dm152/EUX.git
git@gitee.com:dm152/EUX.git
dm152
EUX
EUX
release

搜索帮助

14c37bed 8189591 565d56ea 8189591