8个版本
0.3.2 | 2022年4月23日 |
---|---|
0.3.1 | 2022年4月16日 |
0.2.1 | 2022年4月10日 |
0.1.2 | 2020年3月30日 |
#149 在 文本编辑器 中
86 每月下载量
295KB
7.5K SLoC
Zee是一个受Emacs启发的现代终端编辑器。它用Rust编写,具有一定的实验性。
在旧式文本编辑器演示的传统中,以下是它当前编辑其自身源代码的样子
功能
- 100 FPS编辑器。光标移动和编辑在10毫秒内渲染。其他一切操作都异步进行(语法解析和高亮,磁盘IO,文件选择器)。
- 缓冲区由快速B树实现的rope支持(通过cessen的ropey)。
- 编辑树历史记录,即撤销/重做树
- 使用Tree-sitter从您的代码生成解析树。此AST用于语法高亮和实时验证。由于它是一个增量解析库,因此可以扩展到包含100万行代码的文件。
- 多缓冲区,多窗格 -- 共享状态优于tmux中的多个编辑器
- 快速递归文件搜索,具有模糊匹配和忽略文件意识(使用BurntSushi的ripgrep crates walkdir,ignore)
- 带有目录导航的本地文件选择器
- 一个实用的编辑器,而不是CRDTs的研究
入门
建议使用cargo安装zee。
cargo install zee
要启动编辑器,运行 zee
。预期地,您可以将一个或多个文件传递给编辑器以打开,例如 zee file1 file2
。
安装选项
要启用与系统剪贴板的集成,请使用带有 system-clipboard
功能的安装zee。
cargo install --features system-clipboard zee
要在Linux上构建支持剪贴板的功能,您还需要x11绑定。在 Debian-y 发行版上,您可以如此安装它们
sudo apt install xorg-dev libxcb-shape0-dev libxcb-xfixes0-dev
语法高亮
Zee使用Tree-sitter解析器进行语法高亮和源代码的实时验证。要下载和构建解析器,只需运行
zee --build
解析器已下载、编译并放置在配置目录内的 runtime/
目录中。确切位置取决于系统,例如在 Linux 或 macOS 上为 ~/.config/zee/runtime
,在 Windows 上为 %AppData%/zee/runtime
。
从源代码构建
Zee是用 Rust 编写的,需要最新的稳定编译器才能构建。您可以使用 cargo 像预期的那样构建它。
git clone https://github.com/zee-editor/zee.git && cd zee
cargo run -- zee/src/main.rs
编辑器还依赖于 tree sitter 解析器,每种支持的语言一个。目前,这些解析器是通过使用 zee/modes.ron
文件静态配置的。每个 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 中为粘贴或复制粘贴)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 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可证(LICENSE-MIT 或 http://opensource.org/licenses/MIT)
由您自行选择。
贡献
除非您明确表示,否则根据Apache-2.0许可证定义的任何有意提交以供包含的贡献,将按上述方式双重许可,无需任何额外的条款或条件。
依赖项
~29–44MB
~748K SLoC