Flow 目前处于积极开发阶段,但非常稳定,已成为我处理几乎所有事务的首选工具(Daily Driver)。
特性
- 闪电般的 TUI:帧时间 ≤6ms,输入延迟极低,支持流畅的动画滚动。
- 直观的 UI:包含标签页、滚动条、调色板,所有 UI 元素均提供完整的鼠标支持。
- 广泛的语言支持:通过 Tree-sitter 提供语法高亮,支持超过 70 种编程语言,无需任何配置。
- LSP 集成:预配置支持大多数语言服务器(Language Server Protocol)。
- 强大的多光标编辑:内置剪贴板历史记录。
- 高度可配置的按键绑定:支持模态和非模态编辑风格。
- 多种预设按键模式:
- Flow Control:类 GUI IDE 风格(类似于 VS Code)
- Emacs
- Vim
- Helix
- 自定义模式
- 高性能架构:采用混合 Rope/Piece-table 缓冲区系统,可编辑包含数千个光标的超大文件。
- 无限撤销:只要内存足够,即可无限撤销。
- 全面 Unicode 支持:包括对 Kitty 文本缩放协议的支持。
- 丰富的主题:内置多种主题,并通过
flow-themes 项目支持 VS Code 主题。
- 跨平台:运行于 Linux、FreeBSD、MacOS、Windows 和 Android(通过 Termux),且支持轻松交叉编译至所有目标平台。
系统要求
- 现代终端,支持 24 位真彩色,理想情况下支持 Kitty 键盘协议。目前推荐使用 Kitty、Foot 或 Ghostty。Zellij 也表现良好。大多数其他终端可以使用,但功能可能会受限。
- 支持 NerdFont(通过终端字体回退或打补丁字体)。
- UTF-8 语言环境。
开发路线图
请访问我们的 开发日志 获取开发团队的最新动态。
- 开发中:LSP 补全支持、持久化撤销/重做、文件监视器集成。
- 未来规划:协作编辑、插件系统、多终端会话。
下载/安装
主要网站提供安装指南,并提供源码、发布版本和每日构建版二进制文件下载。你也可以检查你本地的系统软件包仓库。
构建
确保你的系统满足上述要求。Flow 目前使用 Zig 0.16 构建。构建命令:
zig build -Doptimize=ReleaseSafe
Zig 默认会为你的特定 CPU 优化二进制文件。如果你遇到“非法指令”错误,请添加 -Dcpu=baseline 以生成兼容通用 CPU 的二进制文件。
多亏了 Zig,你可以从任何宿主机交叉编译到几乎任何目标平台。例如:
zig build -Doptimize=ReleaseSafe -Dtarget=x86_64-windows --prefix zig-out/x86_64-windows
zig build -Doptimize=ReleaseSafe -Dtarget=x86_64-macos-none --prefix zig-out/x86_64-macos
zig build -Doptimize=ReleaseSafe -Dtarget=aarch64-linux-musl --prefix zig-out/x86_64-linux
交叉编译时,Zig 会构建一个通用 CPU 支持的二进制文件。
生成的二进制文件:
- 默认静态构建,包含所有必要的 Tree-sitter 解析器和查询。
- 无需额外运行时文件。
运行 Flow Control
Flow Control 的二进制文件名为 flow。
- 放置在
PATH 中以便访问:sudo cp zig-out/bin/flow /usr/local/bin
- 或让 Zig 安装到你的用户目录:
zig build -Doptimize=ReleaseSafe --prefix ~/.local
Flow Control 是单个静态链接的二进制文件,无需进一步安装,通过复制文件即可在其他系统上运行:
scp zig-out/bin/flow root@otherhost:/usr/local/bin
指定加载文件:
在命令行中指定文件路径即可。最后一个文件会被打开,之前的文件会以相反顺序放入“最近文件”列表中。使用 Ctrl-e 切换最近文件。
支持常用的目标行号指定:flow file.txt:10:5 或 Vim 风格:flow +10 file.txt。
使用 --language 强制指定文件类型:flow --language bash ~/.bash_profile。
使用 --list-languages 查看支持的语言名称。
运行 flow --help 查看完整命令行选项。
文档
- 用户手册:在
flow 内可使用 F1 打开“Open help”命令。也可在网站文档部分查阅。
- 开发资源:可在 Flow Control 网站找到。此外还有一个 AI 生成的开发指南(准确性可能存在差异,请对照源代码核实)。
配置
配置主要在 UI 中动态维护,存储在标准用户配置路径下(通常 Linux 下为 ~/.config/flow,Windows 下为 %APPDATA%\Roaming\flow)。
- 在命令面板中查找以“Edit”开头的命令即可直接打开配置文件。
- 通过“Edit file type configuration”命令配置特定文件类型。
日志、跟踪信息和每个项目的最近使用文件列表存储在标准用户应用状态目录中(通常 Linux 为 ~/.local/state/flow)。
按键绑定与命令
- 按
F1 查看在线手册。
- 按
F4 切换按键绑定模式(flow, vim, emacs 等)。
- 按
ctrl+shift+p 或 alt+x 显示命令面板。
- 按
ctrl+F2 查看当前所有按键绑定和命令。
- 运行
Edit keybindings 命令可保存并编辑当前模式,通过存为新文件即可创建全新的按键模式。更改将在重启后生效。
终端配置
Kitty、Ghostty 和大多数终端的默认快捷键可能与编辑器冲突,建议重新绑定这些终端中未被使用的键。
- 对于 Kitty,通常只需重新绑定
kitty_mod。
- 对于 Ghostty,每个冲突的绑定需要单独重新配置。
加入我们
Zig 中文社区是一个开放的组织,我们致力于推广 Zig 在中文群体中的使用,有多种方式可以参与进来:
- 供稿,分享自己使用 Zig 的心得
- 改进 ZigCC 组织下的开源项目
- 加入微信群、Telegram 群组
Flow 目前处于积极开发阶段,但非常稳定,已成为我处理几乎所有事务的首选工具(Daily Driver)。
特性
flow-themes项目支持 VS Code 主题。系统要求
开发路线图
请访问我们的 开发日志 获取开发团队的最新动态。
下载/安装
主要网站提供安装指南,并提供源码、发布版本和每日构建版二进制文件下载。你也可以检查你本地的系统软件包仓库。
构建
确保你的系统满足上述要求。Flow 目前使用 Zig 0.16 构建。构建命令:
Zig 默认会为你的特定 CPU 优化二进制文件。如果你遇到“非法指令”错误,请添加
-Dcpu=baseline以生成兼容通用 CPU 的二进制文件。多亏了 Zig,你可以从任何宿主机交叉编译到几乎任何目标平台。例如:
交叉编译时,Zig 会构建一个通用 CPU 支持的二进制文件。
生成的二进制文件:
运行 Flow Control
Flow Control 的二进制文件名为
flow。PATH中以便访问:sudo cp zig-out/bin/flow /usr/local/binzig build -Doptimize=ReleaseSafe --prefix ~/.localFlow Control 是单个静态链接的二进制文件,无需进一步安装,通过复制文件即可在其他系统上运行:
scp zig-out/bin/flow root@otherhost:/usr/local/bin指定加载文件:
在命令行中指定文件路径即可。最后一个文件会被打开,之前的文件会以相反顺序放入“最近文件”列表中。使用
Ctrl-e切换最近文件。支持常用的目标行号指定:
flow file.txt:10:5或 Vim 风格:flow +10 file.txt。使用
--language强制指定文件类型:flow --language bash ~/.bash_profile。使用
--list-languages查看支持的语言名称。运行
flow --help查看完整命令行选项。文档
flow内可使用F1打开“Open help”命令。也可在网站文档部分查阅。配置
配置主要在 UI 中动态维护,存储在标准用户配置路径下(通常 Linux 下为
~/.config/flow,Windows 下为%APPDATA%\Roaming\flow)。日志、跟踪信息和每个项目的最近使用文件列表存储在标准用户应用状态目录中(通常 Linux 为
~/.local/state/flow)。按键绑定与命令
F1查看在线手册。F4切换按键绑定模式(flow, vim, emacs 等)。ctrl+shift+p或alt+x显示命令面板。ctrl+F2查看当前所有按键绑定和命令。Edit keybindings命令可保存并编辑当前模式,通过存为新文件即可创建全新的按键模式。更改将在重启后生效。终端配置
Kitty、Ghostty 和大多数终端的默认快捷键可能与编辑器冲突,建议重新绑定这些终端中未被使用的键。
kitty_mod。加入我们
Zig 中文社区是一个开放的组织,我们致力于推广 Zig 在中文群体中的使用,有多种方式可以参与进来: