zcode 是一个基于 Rust 开发的现代化、高性能 TUI(终端用户界面)文本编辑器。
- Rust toolchain(推荐使用
rust-toolchain.toml固定的版本) - Linux: 需要 C 工具链用于链接(例如
cc/gcc)(用于编译 tree-sitter grammar) - 终端字体建议使用 Nerd Font(用于显示 UI 图标)
- 可选(用于 LSP 智能功能):
rust-analyzer、gopls、pyright-langserver、typescript-language-server、clangd、jdtls
在项目根目录下运行:
# 1. 打开当前目录
cargo run
# 2. 显式打开当前目录
cargo run -- .
# 3. 打开指定文件
cargo run -- src/main.rsTUI 编辑器在 Debug 模式下可能会因为大量绘制计算显得略有卡顿,推荐使用 Release 模式体验流畅度:
cargo run --release -- .从源码构建并安装到 Cargo 的 bin 目录(通常是 ~/.cargo/bin):
cargo install --path . --locked
zcode也可以使用辅助脚本:
./install.sh --user
# 或者:sudo ./install.sh --system如果使用 ./install.sh --user,请确保 ~/.local/bin 已加入 PATH。
默认键位映射如下:
-
通用:
Ctrl + q: 退出编辑器Ctrl + s: 保存当前文件Ctrl + ,: 打开设置 (Settings)Ctrl + b: 切换侧边栏显示
-
编辑器:
Ctrl + f: 打开文件内搜索Ctrl + h: 打开替换F3/Ctrl + g: 查找下一个Shift + F3/Ctrl + Shift + g: 查找上一个Ctrl + \: 垂直拆分编辑器 (Split Vertical)Ctrl + Shift + \: 关闭拆分的编辑器Ctrl + Shift + e: 聚焦文件资源管理器Ctrl + Shift + f: 聚焦全局搜索面板
-
标签页:
Ctrl + w: 关闭当前标签页Ctrl + Tab: 切换到下一个标签页Ctrl + Shift + Tab: 切换到上一个标签页
-
光标与选区:
Ctrl + a: 全选Ctrl + c/x/v: 复制 / 剪切 / 粘贴Ctrl + z: 撤销Ctrl + y: 重做
-
LSP(当对应语言服务可用时):
F2: 悬停提示 (Hover)F12: 跳转定义 (Go to Definition)Shift + F12: 查找引用 (Find References)Alt + Enter: Code ActionCtrl + Space: 自动补全 (Completion)Ctrl + Shift + r: 重命名 (Rename)
zcode 对鼠标操作有完善的支持:
- 文件导航: 在左侧资源管理器中,点击文件夹可展开/折叠,双击文件可打开。
- 标签页管理:
- 左键点击: 切换标签页。
- 中键点击: 关闭标签页。
- 点击 'x': 关闭标签页。
- 分屏调整: 拖动编辑器之间的分割线可调整分屏大小。
- 光标定位: 在编辑器区域点击可直接移动光标。
- 现代化 TUI 编辑器: 基于
ratatui和crossterm构建,支持侧边栏、底部面板、多标签页与分屏编辑。 - 多语言语法高亮: 基于 tree-sitter,为 Rust/Go/Python/JavaScript/TypeScript(含 JSX/TSX)、Java、C、C++ 提供语法高亮兜底。
- 多语言 LSP 支持(可选): 为 Rust/Go/Python/JS/TS、Java、C、C++ 提供诊断、悬停、补全、跳转定义等功能。
- monorepo 友好:按语言“就近 marker”识别 root,并按 (language, root) 启动/复用 server。
- server 自动发现:优先使用项目内
node_modules/.bin与 Python 虚拟环境(如果存在)。
- 强大的搜索: 内置基于
ripgrep的高性能全局搜索和文件内实时搜索。 - 键位映射: 支持灵活的键位绑定配置 (Keybindings),用户可自定义快捷键。
- 剪贴板集成: 与系统剪贴板无缝互通。
- 主题编辑器: 内置可视化主题编辑器,用于自定义语法高亮配色。通过命令面板打开(
Ctrl + Shift + p> "Open Theme Editor")。- 色彩选择器: 色相条(竖条)+ 饱和度/亮度色谱面板,点击或拖拽选色,右侧代码预览实时更新。
- 自动保存: 颜色修改会自动保存到
setting.json(300ms 防抖),无需手动保存。 - 键盘操作:
Tab切换焦点(Token 列表 / 色相条 / SL 面板)。方向键调节数值(Shift加大步进)。l切换预览语言。Ctrl + r重置当前 Token 为默认颜色。Esc关闭。 - 鼠标操作: 点击或拖拽色相条改变色相;点击或拖拽 SL 面板改变饱和度/亮度;点击 Token 列表选择要编辑的语法元素。
配置文件位置:
- Linux:
~/.cache/.zcode/setting.json - macOS:
~/Library/Caches/.zcode/setting.json
你可以在 setting.json 里控制是否显示缩进引导线:
{
"editor": {
"show_indent_guides": true
}
}设置为 false 即可关闭。也兼容 showIndentGuides 写法。
你可以在 setting.json 中按语言配置 LSP server 的 command/args,以及可选的 initialize options:
{
"lsp": {
"servers": {
"rust-analyzer": { "command": "rust-analyzer" },
"gopls": { "command": "/home/you/go/bin/gopls" },
"pyright": { "command": "pyright-langserver", "args": ["--stdio"] },
"tsls": {
"command": "typescript-language-server",
"args": ["--stdio"],
"initialization_options": {
"preferences": {
"includeCompletionsForModuleExports": true
}
}
}
}
}
}对 Go 而言,如果 gopls 安装在 ~/go/bin,建议像上面一样显式配置绝对路径。
请安装 C 工具链。
- Ubuntu/Debian:
sudo apt install build-essential - Fedora/RHEL:
sudo dnf install gcc - Arch:
sudo pacman -S base-devel
请安装以下任意一个:
- Wayland:
wl-clipboard(wl-copy/wl-paste) - X11:
xclip或xsel
zcode 默认会启用 LSP,但具体语言 server 是可选的。按需安装:
-
Rust(
rust-analyzer):rustup component add rust-analyzer rust-src
-
Go(
gopls):go install golang.org/x/tools/gopls@latest
-
Python(
pyright-langserver):npm i -g pyright # 或:pipx install pyright -
JavaScript/TypeScript(
typescript-language-server):npm i -g typescript-language-server typescript # 或项目内:npm i -D typescript-language-server typescript -
C/C++(
clangd):从系统 LLVM/Clang 软件包安装(例如 Debian/Ubuntu 上安装
clangd)。 -
Java(
jdtls):安装 Eclipse JDT Language Server,并确保
jdtls可通过PATH访问。
如果 JS/TS 按项目安装,zcode 会自动向上查找并使用 node_modules/.bin。
macOS默认终端有极小概率出现不响应鼠标的情况,这个是终端的BUG,关掉重开就行
cargo fmt --all -- --check
cargo clippy --all-targets --all-features -- -D warnings
cargo test --all-targets --all-featuresGPL-3.0,详见 LICENSE。
