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文本编辑器

Download history 11/week @ 2024-03-08 5/week @ 2024-03-15 13/week @ 2024-03-29 3/week @ 2024-04-05 5/week @ 2024-04-26 2/week @ 2024-05-03

86 每月下载量

MIT/Apache

295KB
7.5K SLoC

Zi logo

Build Status Crates.io

Zee是一个受Emacs启发的现代终端编辑器。它用Rust编写,具有一定的实验性。

在旧式文本编辑器演示的传统中,以下是它当前编辑其自身源代码的样子

Peek 2020-03-09 00-16

功能

  • 100 FPS编辑器。光标移动和编辑在10毫秒内渲染。其他一切操作都异步进行(语法解析和高亮,磁盘IO,文件选择器)。
  • 缓冲区由快速B树实现的rope支持(通过cessen的ropey)。
  • 编辑树历史记录,即撤销/重做树
  • 使用Tree-sitter从您的代码生成解析树。此AST用于语法高亮和实时验证。由于它是一个增量解析库,因此可以扩展到包含100万行代码的文件。
  • 多缓冲区,多窗格 -- 共享状态优于tmux中的多个编辑器
  • 快速递归文件搜索,具有模糊匹配和忽略文件意识(使用BurntSushi的ripgrep crates walkdirignore
  • 带有目录导航的本地文件选择器
  • 一个实用的编辑器,而不是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-fRight 向前移动
  • C-bLeft 向后移动
  • C-nDown 向下移动
  • C-pUp 向上移动
  • A-f 向前移动一个单词
  • A-b 向后移动一个单词
  • A-n 向前移动一个段落
  • A-p 向后移动一个段落
  • C-aHome 移动到行首
  • C-eEnd 移动到行尾
  • C-vPageDown 向下移动一页
  • A-vPageUp 向上移动一页
  • 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-zC-/ 撤销上一个命令
  • C-q 重做上一个命令
  • C-x u 打开编辑树查看器
  • Enter 插入新行,移动光标
  • C-o 在光标后插入新行,不移动光标
  • C-x C-s 保存当前缓冲区

文件导航

  • C-x C-f 使用目录级选择器选择要打开的文件
  • C-x C-v 在所选目录中递归搜索要打开的文件
  • C-l 打开文件时,转到父目录
  • Tab 打开文件时,填充当前选定的路径

编辑树查看器

  • C-pUp 向上移动树到较旧版本,撤销命令
  • C-nDown 向下移动树到较新版本,重做命令
  • C-bLeft 选择当前版本的左侧子节点
  • C-fRight 选择当前版本的右侧子节点

全局

  • C-g 取消当前操作
  • C-x k 选择要关闭的缓冲区
  • C-x b 将当前窗口切换到另一个缓冲区
  • C-x 0C-x C-0 关闭当前焦点窗口
  • C-x 1C-x C-1 使当前焦点窗口全屏
  • C-x 2C-x C-2 在当前焦点窗口下方拆分
  • C-x 3C-x C-3 在当前焦点窗口右侧拆分
  • C-x oC-x C-o 切换到下一个缓冲区
  • C-x C-t 在可用主题之间循环
  • C-x C-c 退出

许可证

本项目的许可证为以下之一

由您自行选择。

贡献

除非您明确表示,否则根据Apache-2.0许可证定义的任何有意提交以供包含的贡献,将按上述方式双重许可,无需任何额外的条款或条件。

依赖项

~29–44MB
~748K SLoC