BigText

即刻打开 50 GB 的文本文件

免费开源,支持 Windows、Linux 和 macOS。无论文件多大,都不卡顿、不等待。

BigText 是一款为日志文件、CSV 导出、数据库转储以及任何普通编辑器打不开的大文件而生的编辑器,也是 EmEditor 和 UltraEdit 的免费替代品。它从不把整个文件载入内存:10 GB 的日志几毫秒即可打开,只占用约 100 MB 内存。

Windows · Linux · macOS · MIT 许可证 · 用 Rust 编写

  • 41 ms打开 50 GB 文件到显示第一屏
  • 2.5 GB/s全文搜索速度
  • 107 MB打开 50 GB 文件时的内存
  • < 3 ms建索引期间的界面帧时间

处理超大文件所需的一切

专为日志、CSV 和 SQL 转储、JSON 导出,以及任何让其他编辑器卡死的文本文件而打造。

打开任意大小的文件

只读取可见部分:在 Windows 上通过内存映射窗口,在 Linux 和 macOS 上按需分块读取。其余部分在后台流式处理;网络或 USB 驱动器会改用带缓存的分块读取,慢速磁盘永远不会卡住窗口。

即刻跳转到任意行

稀疏行索引(每 64 KB 占 8 字节)在后台以 2.5 GB/s 构建。即使索引尚未完成,转到行和滚动条也能立即使用。

快速搜索与正则

纯文本搜索达 2.5 GB/s,正则表达式以线性时间运行,支持区分大小写、全字匹配和多行选项。“查找全部”最多列出一百万条结果;F3 立即可用。

跨 GB 级替换

支持 $1 和命名分组替换。5 万处以内的修改是一次可撤销的编辑;更大的任务会流式写入新文件:在 10 GB 文件中替换 2200 万处耗时 11 秒,占用 46 MB 内存。

真正的编辑

输入、剪切、复制、粘贴、撤销与重做、复制或删除行、自动缩进,全部基于 piece table,因此在保存之前编辑不会重写文件。

防崩溃保存

保存时先写入临时文件并刷入磁盘,再原子地替换原文件。崩溃或断电都不会留下写了一半的文件。可选 .bak 备份。

编码与十六进制视图

自动识别 UTF-8、UTF-16 LE/BE、Windows-1251、Windows-1252 和 ISO-8859-1;LF、CRLF 和 CR 换行符可保留或转换。二进制文件以十六进制视图打开。

日志工具

跟踪模式(类似 tail -f)用于不断增长的日志,支持日志、JSON、XML、CSV、SQL 和 INI 的语法高亮,还有书签和同一文件的拆分视图。

比较超大文件

以流式方式逐行比较两个数 GB 的文件:1 GB 对 1 GB 仅需 0.6 秒,内存约 2 MB。点击某处差异即可跳转。

筛选与高亮

只显示匹配的行或只显示不匹配的行,就像对整个文件运行 grep,并可保存到新文件。用不同颜色标出 ERROR 等模式,并在滚动条上看到匹配集中的位置。

跳到某个时间

输入 14:32:05,即可跳到该时间的第一条日志:二分查找只需读取 50 GB 日志中的几百 KB。选中几行即可查看它们之间的时间间隔。

压缩日志与管道

直接打开 .gz 和 .zst 文件,把命令输出通过管道交给 BigText(journalctl -f | bigtext -),或在命令行中用 app.log:120 打开到指定行。

CSV 表格

CSV 和 TSV 文件以表格打开,滚动起来和文本一样快。可按列排序、查看列统计、按列筛选,以及重命名、移动、导出或删除列。引号内含换行的记录显示为一行。

文本工具

排序、去重和反转行,转换大小写,去除空白,格式化或压缩 JSON,并可通过 Alt+拖动进行列选择,一次编辑多行。

随你所好

命令面板(Ctrl+Shift+P)、可自定义的快捷键、任意等宽字体,以及英语、俄语、乌兹别克语、中文、西班牙语、葡萄牙语、德语或土耳其语界面。

日志分析

带 ERROR、WARN、INFO 和 DEBUG 筛选的级别栏,F8 跳到下一个错误,时间直方图、日志字段、消息模式、高频值、时间空档,以及每个匹配周围或带有相同请求 ID 的行。

按时间并排查看日志

把多个日志按时间戳合并为一个带颜色的视图,或对齐已打开的日志并按时间同步滚动,时钟偏差可调。跟踪模式能挺过日志轮转。

JSON 与 XML

结构面板、状态栏中显示光标处的 JSON 路径、折叠、以表格查看 JSON Lines 并查询、能指出错误位置的严格校验、JSON、JSON Lines 与 logfmt 之间的转换,以及结构化比较。

能计算的表格

分组求和、数据透视表、按键连接两个文件、计算列、列图表、冻结和隐藏列、行校验,以及导出为 JSON、Markdown 或 Excel。

随心比较

并排或统一 diff 格式,上一处和下一处差异,忽略空白、大小写或时间戳,只在一个文件中出现的行,按键比较 CSV,以及应用补丁。

压缩包与大规模编辑

zip 和 tar 压缩包中的文件、边解压边显示的 .xz 和 .bz2 文件、直接保存为 .gz 或 .zst、多光标、列编辑器,以及对任意大小的文件排序、去重或运行任意命令。

在文件中查找与脚本

以“文件:行”格式搜索整个文件夹,并在脚本中用 bigtext-cli 执行 count、head、tail、slice、replace、CSV 工具和 JSON 输出。支持会话、便携模式,再次启动会在已运行的窗口中打开。

人人都舒适

高对比度和色盲友好主题、界面缩放、屏幕阅读器支持、禅模式、带标尺的按列换行、可点击的状态栏,以及为每个文件记住的设置。

也是顺手的代码编辑器

为 Python、JavaScript、TypeScript、Java、C#、C/C++、Go、Rust、PHP、Shell 脚本、YAML 等提供 One Dark、Monokai、GitHub 或 Solarized 配色的语法高亮;类似 Sublime Text 的文件夹侧边栏;Ctrl+P 查找文件,Ctrl+R 列出文件中的函数和类,Ctrl+/ 注释行,括号自动闭合。只给屏幕上的行着色,所以超大文件依旧飞快。

服务器上的日志

用你的密钥通过 SSH 打开 user@server:/var/log/app.log,或打开 https:// 和公开的 s3:// 文件,无需下载:只传输屏幕上的部分,通过 SSH 时搜索在服务器上运行。也可以像 tail -F 一样跟踪日志的最后几 MB。

Web 服务器日志

nginx 和 Apache 访问日志、AWS 负载均衡器和 IIS 日志以及 syslog 都能以表格打开,每个字段一列。Web 日志报告一次遍历即可给出热门 URL、每分钟的 5xx 错误和最慢的请求:1 GB 日志不到 2 秒。

容器和服务日志

从列表中选择 Docker 或 Podman 容器、Kubernetes Pod 或 systemd 服务,可以在本机,也可以通过 SSH 在服务器上,然后打开它的日志:最后若干行或最近若干分钟,并随增长持续跟踪。Pod 会显示重启次数,还能打开它上次重启前的运行日志,崩溃的错误就在那里。

新行提醒

为正在跟踪的日志设置几个模式,例如 ERROR 或正则表达式:每一条匹配的新行都会在标签页上计数,并以系统通知和提示音告知,最多每十秒一次。在 Windows 上点击通知即可跳到该行。

SQL 转储中的表

列出 mysqldump、pg_dump 或 SQLite 转储中的表及其行数和大小:1 GB 的转储约一秒列完。可以把一个表保存为能单独恢复的文件,或把转储按表拆分为多个文件,按文件名顺序执行即可恢复整个数据库。

截图

BigText 如何保持快速

普通编辑器要先读完整个文件才显示内容。BigText 只读取屏幕上的部分,其余工作都在后台线程完成,因此窗口响应时间不到 3 毫秒。

内存映射窗口

文件以 256 MB 的窗口映射,只有你正在看的字节才会被访问。搜索、建索引和保存使用各自独立的流式读取。在 Linux 和 macOS 上,屏幕改为读取 64 KB 的块,因此打开时被截断的文件不会让程序崩溃。

稀疏行索引

每 64 KB 一个 8 字节的检查点:50 GB 文件只需 8 MB 索引。检查点之间的行位置按需用 SIMD 计算。

Piece table

编辑以小片段的形式记录在原文件之上,因此在 50 GB 文件中插入一行只需几个字节,撤销也是瞬间完成。

原子保存

在原文件旁写入临时文件,执行 fsync,再原子替换(在 Windows 上使用 ReplaceFileW,保留属性和权限)。

实测性能

在 Windows 11 上用 1 GB、10 GB 和 50 GB 测试文件运行内置基准测试的结果。方法和完整结果见 README。 README

任务结果
打开 → 显示第一屏文本(1–50 GB)41–46 ms
在 50 GB 文件中跳到某一行不到 1 ms
构建行索引2.2–2.7 GB/s(50 GB 约 20 秒)
纯文本搜索2.4–2.5 GB/s
正则搜索含字面部分时 2.3–2.8 GB/s,不含时 672 MB/s
在 10 GB 文件中全部替换11.3 秒,峰值内存 46 MB
打开 50 GB 文件时的内存107 MB
启动 → 第一帧159–185 ms

下载 BigText

个人和商业用途均免费。无需账号,没有遥测,只有一个可执行文件。

Windows 10 / 11

安装版带“打开方式”和资源管理器右键菜单,另有便携版。程序未签名:如果 SmartScreen 弹出提示,请选择“更多信息”→“仍要运行”。

Linux x64

可在大多数发行版上运行的 AppImage、适用于 Debian 和 Ubuntu 的 .deb 包,或便携的 .tar.gz。

macOS

适用于 Apple Silicon 和 Intel 的 BigText.app。应用未签名:首次启动时请右键 → 打开。

所有版本及发行说明 · 隐私

用包管理器安装

Windows,使用 Scoop:

scoop bucket add bigtext https://github.com/Erkinbek/scoop-bigtext
scoop install bigtext/bigtext

macOS 和 Linux,使用 Homebrew:命令行版本,或用 --cask 安装应用:

brew install erkinbek/tap/bigtext
brew install --cask erkinbek/tap/bigtext-app

用 Cargo 安装

从 rustup.rs 安装 Rust,然后运行:

cargo install bigtext

或从源代码构建:

git clone https://github.com/Erkinbek/bigtext.git
cd bigtext
cargo build --release

常见问题

如何打开一个 50 GB 的文本文件?

安装 BigText,然后通过“文件 → 打开”、把文件拖到窗口上,或右键 →“Open with BigText”打开。无论文件多大,第一屏都在约 40 毫秒内出现;行索引在后台构建时,滚动和转到行都可以使用。

BigText 是 EmEditor 或 UltraEdit 的替代品吗?

就大文件而言,是的。和它们一样,BigText 打开数 GB 的文件时不会载入内存,并能搜索、编辑和保存;与它们不同的是,它免费开源,可在 Windows、Linux 和 macOS 上运行。它没有宏和插件:精力全部放在超大文件、日志和表格上。

BigText 会把整个文件载入内存吗?

不会。它只映射屏幕上的部分,其余全部在后台流式处理。打开 50 GB 文件时约占 107 MB 内存,其中大部分用于界面本身。

我能编辑并保存非常大的文件吗?

可以。编辑记录在原文件之上的 piece table 中,所以无论文件多大,输入都是即时的。保存时结果先流式写入临时文件,再原子替换原文件,即使出错原文件也不会损坏。

在超大文件中搜索有多快?

纯文本搜索速度为 2.4–2.5 GB/s,常见正则表达式为 2.3–2.8 GB/s,因此搜索 10 GB 日志约需 4 秒。F3 无需等待完整搜索,立即找到下一处匹配。

它能像 tail -f 一样跟踪不断增长的日志吗?

能。“视图 → 跟踪”让视图停留在文件末尾,并在新行到达时为其建立索引。BigText 还会发现文件在磁盘上被修改,并提示重新加载。

它能打开只有一行的超大文件吗,比如压缩过的 JSON?

能。超过 64 KB 的行会软换行显示,即使是一行 2 GB 的内容也能流畅滚动。

支持哪些编码和换行符?

UTF-8、UTF-16 LE/BE(带或不带 BOM)、Windows-1251、Windows-1252 和 ISO-8859-1,自动识别,并可通过“文件 → 按编码重新打开”切换。LF、CRLF、CR 及混合换行符都能识别,并可在保存时转换。

BigText 免费吗?支持哪些系统?

BigText 免费开源,采用 MIT 许可证。Windows 10 和 11 是主要且经过完整测试的平台;Linux 和 macOS(Apple Silicon 和 Intel)版本在每次改动时由 CI 构建和测试。

隐私

  • 检查更新:只在你要求时(帮助 → 检查更新…),或在 BigText 首次启动时你同意了自动检查的情况下每天一次。请求发往 GitHub 的 API,只携带 BigText 的版本号,不包含关于你或你的文件的任何信息。
  • 远程文件:BigText 只连接你输入的服务器或地址。
  • 没有遥测、使用统计或崩溃报告。