几款文本编辑器横向比较
关键字: 大文件、编辑器
编辑器功能及性能比较
免责声明
- 以下列选编辑器,仅限于本人日常接触的产品,带有强烈的个人主观和随机性,未列选产品并不代表不能满足功能需求。
- 测试数据(特别是时间),受限于观察条件,不可避免的存在误差,仅用于感性判断,请勿用于选型、商务等用途,由此造成的损失本人不负任何责任。
- 观察粒度难保严谨,很多功能项并不是支持与不支持可以简单概括,同样都支持在使用中也会存在较大差异,请勿用此简单衡量编辑器能力。
- 每个编辑软件都有自己的特点和受众,在特定场合都能发挥价值,不得将本测试数据用于攻击、诋毁相关软件,由此造成的后果本人不负任何责任。
- 由于个人水平有限,测试数据和方法难免存在错误,并不是本人有意构陷,欢迎批评指正以及反馈合理建议。
- 本测试的用意是知己知彼,发现短板改进短板,促进国产编辑软件走向一流。
概述
下表整理几款编辑器的功能情况:
编辑器: | EverEdit | EmEditor | UltraEdit | CudaText | RJTextEd | Notepad-- | Notepad3 | Vim |
---|---|---|---|---|---|---|---|---|
版本 | v4.5.0(4500) | Version 24.3.2 | 2024.1.0.3264-bit | 1.217.5.1 | 16.300 (64-bit) | v2.18.0(20240730) | (x64)6.23.203.2 | 9.1 |
支持OS |
Windows | Windows | Windows | Windows Linux macOS FreeBSD Solaris ... |
Windows | Windows MacOS Linux/UOS |
Windows | Windows Linux MacOS Unix |
官网 | cn.everedit.net | emeditor.com | ultraedit.com | cudatext.github.io |
rj-texted.se | itdp.cn | rizonesoft.com | vim.org |
占用空间 | 14.2M | 188M Node+LSP 占100M |
215.6M 主程序大(43M) |
50.6M 带了插件 主程序8.6M |
156.9M 语法文件+样式 (约100M) |
64.9M opengl+QT(40M) |
22.7M 多国语言(10M) |
55.9M 文档+多国语言+语法占30M |
启动速度 | <1秒 | <1秒 | >4秒 | ~1秒 | ~3秒 | <1秒 | <1秒 | <1秒 |
大文件 (~500M) 300万行 |
~9秒 -行号正常 -跳转正常 -可编辑 -保存1秒 |
秒开 -行号正常 -跳转正常 -可编辑 -保存无延迟 |
秒开 -行号正常 -跳转正常 -可编辑 -保存无延迟 |
秒开 -行号异常 -跳转正常 -不可编辑 |
~4秒 -行号正常 -跳转正常 -可编辑 -保存耗时11秒 |
~1秒 -行号正常 -跳转受限: Ctrl+G正常, Ctrl+End受限(页内) 方向键受限(页内) 滚动条正常 -可编辑 -保存耗时(1秒) |
~3秒 -跳转死掉 |
~4秒 -行号正常 -跳转正常 -可编辑 -保存4秒 (备份关) |
大文件 (~1G) 600万行 |
~17秒 -行号正常 -跳转正常 -可编辑 -保存1秒 |
秒开 -行号正常 -跳转正常 -可编辑 -保存~0.5秒 |
秒开 -行号正常 -跳转正常 -可编辑 -保存~0.5秒 |
秒开 -行号异常 -跳转正常 -不可编辑 |
~7秒 -行号正常 -跳转正常 -可编辑 -保存耗时24秒 |
~3秒 -行号正常 -跳转同上 -可编辑 -保存耗时(1秒) |
~5秒 -跳转死掉 |
~7秒 -行号正常 -跳转正常 -可编辑 - 保存8秒 (备份关) |
大文件 (~5G) 3千万行 |
~85秒 -行号正常 -跳转正常 -可编辑 -可保存(7秒) |
秒开 (后台加载5秒) -行号可显示 -跳转无延迟 -可编辑 -保存~0.5秒 |
秒开 -行号正常 -跳转末尾延迟3秒 -可编辑 -保存1秒 |
秒开 -行号异常 -跳转无延迟 -不可编辑 |
~100秒 -行号正常 - 跳转无延迟 - 可修改不能保存 |
~15秒(大文件读写) - 行号正常 -跳转同上 -可编辑 -保存耗时(5秒) |
拒绝打开 | ~36秒 -行号正常 -跳转正常 -可编辑 -保存耗时70秒(备份关) |
大文件 (~10G) 6千万行 |
~185秒 - 跳转正常 -行号正常 -可编辑 -可保存(19秒) |
秒开 (后台加载10秒) -内存峰值900M -行号正常 -跳转正常 -可编辑 -保存~0.5秒 |
秒开 -跳转末尾延迟10秒 -行号正常 -可编辑 -保存1秒 |
秒开 -跳转无延迟 -行号异常 -不可编辑 |
~300秒 -鼠标点几下就死 |
~1秒(超大文件读写) - 行号变地址 (扫描行号用时5分50秒) -Ctrl+G无法使用 (扫描后行跳转也失效) -可编辑 -保存耗时(20秒) |
拒绝打开 | ~97秒 -跳转正常 -行号正常 -可编辑 -保存耗时200秒(备份开) -160秒(备份关) |
大文件 (~53G) 3亿行 |
-36分29秒 -内存高峰8G -行号正常 -可编辑 -保存2分10秒 |
-秒开 (后台1分08秒) -内存峰值7G -行号正常 -可编辑 -保存约2秒 |
-秒开 (后台1分08秒) -内存峰值36.9M -行号正常 -可编辑 -保存1秒 |
-秒开 -跳转无延迟 -行号异常 -不可编辑 |
-无进度 -内存耗尽 -无法打开 |
-秒开 -内存占用60M -行号变地址 -Ctrl+G不可用 -可编辑 -保存1分27秒 |
拒绝打开 | - -系统宕机 |
工作区 (会话保存) |
支持 | 支持 | 支持 | 支持 | 不支持 | 支持 | 不支持 | 不支持 |
多选区编辑 | 支持 |
支持 | 支持 | 支持 | 支持 | 不支持 (2.18.0缺失) |
支持 | 插件 |
多标签页 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 不支持 | 支持 |
插件 | 支持 |
支持 |
不支持 | 支持 |
支持 | 支持 | 不支持 | 支持 |
插件库 | ~20个 (官方收集) |
10个 (官方集成) |
- | 160个 (官方收集) |
不详 | ~10+个 (官方收集) |
- | ~6000 (官方收集) 注:含语法、缩进等 |
插件开发 | JScript脚本 可创建界面 |
C++编译 可创建界面 |
- | Python脚本 可创建界面 |
脚本 (vb,c++,pas,js) 可创建界面 |
C++编译 可创建界面 |
- | Vim脚本 |
插件门槛 |
容易 | 难 | - | 容易 | 容易 | 难 | - | 一般 |
用户脚本 | JScript VBScript |
JScript VBScript |
JScript | Python | BasicScript JScript C++Script PascalScript |
不支持 | 不支持 | Vim |
宏 | 支持 | 支持 | 支持 | 支持(插件) | 支持 | 支持 | 不支持 | 支持 |
API文档 | 详细 | 详细 | 详细 | 详细 | 详细 | 简陋 | - | 详细 |
移动行 | Alt+↑ Alt+↓ |
Ctrl+Shift+↑ Ctrl+Shift+↓ |
菜单 无快捷键 |
Alt+↑ Alt+↓ |
Shift+F11 Shift+F12 |
Ctrl+Shift+↑ Ctrl+Shift+↓ |
Alt+↑ Alt+↓ |
命令 (不好记) |
删除空行 | 原生 | 原生 | 原生 | 插件 | 原生 | 原生 | 原生 | 命令 (不好记) |
删除重复行 | 原生 | 原生 | 不支持 | 插件 | 原生 | 原生 | 原生 | 命令 (不好记) |
编码转换 | 94种 | 144种 (保存) |
8种 | 49种 | 99种 | 12种 保存时不能选编码 |
93种 | 49种 |
二进制编辑 | 读写正常 | 读写正常 | 读写正常 | 只读 | 浏览正常 编辑发疯 |
只读 | 不支持 | 读写正常 (要转来转去) |
语法高亮 | 75种 | 30种 | 508种 | 315种(自选加载) | 29种 | 61种 | 52种 | 697种 |
自定义语法 | 支持 规则强大 |
支持 规则一般 |
支持 规则丰富 |
支持 规则丰富(稍麻烦) |
支持 规则丰富 |
支持 (弱:仅关键字列表) |
不支持 | 支持 规则强大 |
文件比对 | 行级比对 | 行级比对 | 行级比对 | 字级比对 | 行级比对 | 字级比对 | 不支持 | 行级比对 |
代码主题 | 丰富 | ≈没有 | 丰富 | 丰富 | 丰富 | 丰富 | 3个 | 丰富 |
CSV编辑 | 无 | 独孤求败 -按列对齐 -单元格编辑 -指定分隔符 -按列排序等 |
无 | 无 | 无 | 无 | 无 | 无 |
列编辑 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
插入序列 | 支持(异常) 数字递增 |
数字递增 字母递增 |
数字递增 | 不支持 (插件?) |
数字递增 字母递增 |
数字递增 固定字母 |
不支持 | 脚本 |
软件性质 | 商业 | 商业 | 商业 | 开源 | 开源 | ~开源 | 开源 | 开源 |
成本 | ¥158(买断) | $48/年 | $80/年 | 免费 | 免费 | 免费/捐助/注册 | 免费 | 免费 |
注:“跳转”指文件打开后,按ctrl+end跳转到文件末尾,检查大文件加载是否完整。“跳转正常”指没有延迟,文件打开很迅速。
文本比较能力对比
BeyondCompare 4 比对结果参考
注:BeyondCompare的比对结果不多说明,可以看出比对结果相当直观。
EverEdit文本比对
可用度:差
结论:只能达到行级的比对,无法充分满足日常比对需求!
EmEditor文本比对
可用度:差
结论:只能达到行级的比对,无法充分满足日常比对需求!
UltraEdit文本比对
可用度:差
结论:基础版只能达到行级的比对,无法充分满足日常比对需求!要更好的比对效果,请加钱~
CudaText文本比对
CudaText没有原生支持文本比对,但可以安装Differ插件
可用度:高
结论:完美!这个比对结果和BeyondCompare有得一拼,非常直观且准确!
RJ Texted文本比对
可用度:差
结论:只能达到行级的比对,无法充分满足日常比对需求!
Notepad--文本比对
可用度:高
结论:和BeyondCompare的比对结果媲美,可以满足日常比对需求。
Vim文本比对
可用度:差
结论:行级比对,比对结果没法看,无法满足日常比对需求。
后记
点评
注:以下描述仅代表个人观点,由于本人水平有限,难免出现错误,欢迎指正、交流!
文本编辑器的核心要素
这里的文本编辑器,特指存在于记事本和IDE之间的一系列编辑器(或称程序员编辑器),它们大多具有代码着色功能,有些可以进行代码编译、工程管理等,但功能又不如IDE强大,各有特色,以满足用户使用记事本太弱,使用IDE又太重的心理需求。 在多如瀚海的文本编辑器中,如何才能选择一款称手的武器呢?本人根据自己的使用心得,总结了如下几点(基于个人经历,不一定适合每个人,请酌情参考):
功能
-
基本功能:市面上的编辑器,不论商业编辑器还是开源编辑器,基本的编辑功能相差不大,如果只是普通的文本编辑,都可以满足工作需要。
-
特殊功能:
- 二进制编辑:多用于特定行业用户,一般用户极少使用。优胜者:EverEdit(收费)、EmEditor(收费)、UltraEdit(收费)
- 大文本编辑:多用于特定行业用户,比如查看日志文件等。优胜者:EmEditor(收费),UltraEdit(收费),Notepad--(免费)
- 文本比对:日常使用频率较高,不限定行业。优胜者:CudaText(免费)、Notepad--(免费)
- 列编辑:日常使用频率高,特别是插入序列,各行种业都可能遇到,用于批量生成配置指令等。优胜者:EmEditor(收费)、RJTextEd(免费)、Notepad--(免费)
- 自定义语法:使用频率低,特殊行业可能存在诉求,常见的语法编辑器基本都支持了,自定义语法的场景非常少。
- 工程管理:见仁见智吧,个人觉得用处不大,要开发软件,使用IDE更好。
性能
既然用户没有选择IDE来处理工作,那肯定是希望编辑器不要太重,轻量、响应迅速是一个文本编辑器的本分!文本编辑器如果不能做到<font color="red">秒开</font>”,相当于强行劝退用户了!**点名批评:UltraEdit,RJ Texted,** 不管基于什么原因,启动花了3、4秒,用户是不能原谅的!
扩展性
扩展性分两个方面, 一是插件,二是用户脚本。
- 插件:编辑器核心功能之外的,满足用户比较通用场景的功能组件,具有一定的普遍性,比如:导出RTF、导出HTML等。插件的实现大致分为两派,脚本派和Dll派,使用脚本开发插件具有门槛低,不依赖开发环境,兼容性好等优点,往往插件市场繁荣的编辑器都是使用脚本开发插件,如:Vim、VSCode等
- 用户脚本:由用户自己编写的脚本,用于批量或者自动化的完成某一特定的任务,该脚本仅限于用户的特定场景使用,一般不具有通用性。目前常见的编辑器都具有脚本功能,属于核心必备功能。
附录
测试环境
测试环境
CPU: 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz
内存:16G DDR4
硬盘:NVMe (PCle x4 8.0 GT/s @ x4 8.0 GT/s) 1T
OS:Microsoft Windows 10 Professional (x64) Build 19045.3570 (22H2)
测试数据
测试数据
测试数据使用awk脚本生成,命令如下:
echo ""|./gendata.awk --c2 --n3000000 > test_500M.csv
echo ""|./gendata.awk --c2 --n6000000 > test_1G.csv
echo ""|./gendata.awk --c2 --n30000000 > test_5G.csv
echo ""|./gendata.awk --c2 --n60000000 > test_10G.csv
echo ""|./gendata.awk --c2 --n300000000 > test_10G.csv
附:gendata.awk为生成测试数据的awk脚本,请在gitbash、cygwin环境下执行。
测试方法
以下指标的评估方法可能存在不严谨,相关结论仅做为参考!
- 插件是否支持:如果编辑器支持脚本语言,但无法提供编程GUI集成到编辑器则认为只支持用户脚本,而不算支持插件
- 插件门槛:插件开发需要使用编译软件,门槛定义为“难”;使用通用脚本语言,门槛定义为“容易”,使用非通用脚本,门槛定义为“一般”。
- 跳转测试:指打开文件后,按Ctrl+End快捷键跳转到文件末尾,检查编辑器是否真正打开文件。
- 大文件编辑:修改文件最后一行最后的字符,并保存。
- 16进制编辑:打开一个非文本文件,本文测试中是选择了一个PDF文件,编辑器打开后正文应该显示16进制数据,右侧显示ASCII字符。
Copyright 2004~2024 太阳雨 All Rights Reserved.