1 个不稳定版本
| 0.1.0 | 2022 年 4 月 23 日 |
|---|
在 文本编辑器 中排名 #351
每月下载 76 次
用于 zee
46KB
1K SLoC
Zee 是一个面向终端的现代编辑器,秉承 Emacs 的精神。它用 Rust 编写,并且有些实验性质。
遵循传统文本编辑器演示的老传统,以下是其编辑自身源代码的当前外观

功能
- 100 FPS 编辑器。光标移动和编辑在 10ms 以下完成。其他所有操作都是异步的(语法解析和突出显示、磁盘 I/O、文件选择器)。
- 缓冲区由快速 B 树实现的 rope 支持背板(通过 cessen 的 ropey)。
- 编辑树历史,也称为撤销/重做树
- 使用 Tree-sitter 从您的代码中生成解析树。此 AST 用于语法突出显示和即时验证。作为一个增量解析库,它可以扩展到拥有 100 万行代码的文件。
- 多缓冲区,多窗口 -- 共享状态优于多个编辑器的 tmux
- 快速递归文件搜索,具有模糊匹配和忽略文件感知(使用 BurntSushi 的 ripgrep crates walkdir,ignore)
- 带目录导航的本地文件选择器
- 一个实用编辑器,而不是 CRDTs 研究的探索
入门指南
建议使用 cargo 安装 zee
cargo install --locked zee
要启动编辑器,请运行 zee。如预期,您可以传递一个或多个要打开的文件,例如 zee file1 file2。
安装选项
要启用与系统剪贴板的集成,请使用 system-clipboard 功能安装 zee
cargo install --locked --features system-clipboard zee
要构建支持剪贴板的功能,您还需要 Linux 上的 x11 绑定。在 Debian-y 发行版上,您可以像这样安装它们
sudo apt install xorg-dev libxcb-shape0-dev libxcb-xfixes0-dev
夜间版本
要直接从官方仓库安装最新版本,只需运行以下命令
cargo install --git https://github.com/zee-editor/zee
重要:请注意,此指令获取的代码库状态可能包含尚未完成的功能,这些功能可能需要一些维护才能包含到下一个稳定版本的发布中。
配置
Zee的配置是通过配置目录下的一个config.ron文件来定制的。
要创建默认配置文件,请使用命令行参数--init。
zee --init
如果config.ron文件还不存在,zee --init将创建一个带注释的新配置文件,准备好进行编辑。
配置目录的确切位置因系统而异,例如在Linux或macOS上为~/.config/zee,在Windows上为%AppData%/zee。可以通过设置环境变量ZEE_CONFIG_DIR来覆盖配置目录的位置。
ZEE_CONFIG_DIR=/home/user/.zee zee --init --build
此命令将在/home/user/.zee初始化配置目录,并立即下载和构建配置的tree sitter解析器。有关--build命令行参数的详细信息,请见下文。
语法高亮
Zee使用Tree-sitter解析器进行语法高亮和对源代码的即时验证。每个tree sitter解析器都编译为一个共享对象,并动态链接。要下载和构建解析器,只需运行
zee --build
解析器被下载、编译并放置在配置目录内的grammars目录中。确切的位置因系统而异,例如在Linux或macOS上为~/.config/zee/grammars,在Windows上为%AppData%/zee/grammars。
解析器是配置文件config.ron中配置的解析器,或者在未找到配置文件的情况下使用默认的解析器。
如果更改了config.ron文件中的解析器,您需要重新运行构建命令。
从源码构建
Zee是用Rust编写的,需要最新稳定的编译器来构建。您可以像预期的那样使用cargo来构建它
git clone https://github.com/zee-editor/zee.git && cd zee
cargo run -- zee/src/main.rs
编辑器还依赖于tree sitter解析器,每种支持的编程语言一个,请参阅配置。每个tree sitter解析器都编译为一个共享对象,并动态链接。
运行cargo build将下载和构建这些解析器,以确保一切正常工作。您可以通过设置ZEE_DISABLE_GRAMMAR_BUILD来跳过此步骤,例如。
ZEE_DISABLE_GRAMMAR_BUILD=t cargo run -- zee/src/main.rs
用法
要启动编辑器,请运行 zee。如预期,您可以传递一个或多个要打开的文件,例如 zee file1 file2。
Zee使用Emacs风格的快捷键。使默认的Emacs快捷键变得容易使用是本项目的一个目标。
下面,C-表示Ctrl + 指定的键,例如,C-k是Ctrl + k。同样,A-表示Alt + 指定的键。空格表示一系列按键,例如,C-x C-c表示先按C-x,然后按C-c。
以下是一些可用的快捷键
移动
C-f,Right向前移动C-b,Left向后移动C-n,Down向下移动C-p,Up向上移动A-f向前移动一个单词A-b向后移动一个单词A-n向前移动一个段落A-p向后移动一个段落C-a,Home移动到行的开头C-e,End移动到行的结尾C-v,PageDown向下移动一页A-v,PageUp向上移动一页A-<移动到缓冲区的开头A->移动到缓冲区的结尾C-l在视觉上居中光标
编辑
C-d向前删除Backspace向后删除C-k删除当前行C-SPC在当前光标位置进入选择模式C-w剪切选择A-w复制选择C-x h选择整个缓冲区并将光标移到开头C-y粘贴选择(在 Emacs 中为粘贴或 yank)C-g清除当前选择C-_,C-z,C-/撤销上一个命令C-q重做上一个命令C-x u打开编辑树查看器Enter插入新行,并将光标移动C-o在光标后插入新行,不移动光标C-x C-s保存当前缓冲区
文件导航
C-x C-f使用目录级选择器选择要打开的文件C-x C-v从所选目录递归搜索要打开的文件C-l在打开文件时,转到父目录Tab在打开文件时,填写当前选定的路径
编辑树查看器
C-p,Up向上移动树到较旧的版本,撤销命令C-n,Down向下移动树到较新的版本,重做命令C-b,Left选择当前版本的左侧子项C-f,Right选择当前版本的右侧子项
全局
C-g取消当前操作C-x k选择要关闭的缓冲区C-x b将当前窗口切换到另一个缓冲区C-x 0,C-x C-0关闭当前聚焦的窗口C-x 1,C-x C-1将当前聚焦的窗口设置为全屏C-x 2,C-x C-2在当前聚焦的窗口下方分割窗口C-x 3,C-x C-3将当前聚焦的窗口向右分割C-x o,C-x C-o将焦点切换到下一个缓冲区C-x C-t循环切换可用的主题C-x C-c退出
许可证
本项目的许可证为以下之一,您可自行选择:
- Apache许可证,版本2.0,(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 https://open-source.org.cn/licenses/MIT)
由您决定。
贡献
除非您明确声明,否则根据Apache-2.0许可证定义的任何有意提交的包含贡献,均将按上述方式双许可,不附加任何额外条款或条件。
依赖项
~2MB
~36K SLoC