#editor #tree-sitter #cursor #zee #syntax-highlighting #rope

zee-edit

为 zee 提供核心文本编辑功能

1 个不稳定版本

0.1.0 2022 年 4 月 23 日

文本编辑器 中排名 #351

Download history 7/week @ 2024-03-10 1/week @ 2024-03-17 2/week @ 2024-03-24 27/week @ 2024-03-31 1/week @ 2024-04-07

每月下载 76
用于 zee

MIT/Apache 协议

46KB
1K SLoC

Zi logo

Build Status Crates.io

Zee 是一个面向终端的现代编辑器,秉承 Emacs 的精神。它用 Rust 编写,并且有些实验性质。

遵循传统文本编辑器演示的老传统,以下是其编辑自身源代码的当前外观

Peek 2020-03-09 00-16

功能

  • 100 FPS 编辑器。光标移动和编辑在 10ms 以下完成。其他所有操作都是异步的(语法解析和突出显示、磁盘 I/O、文件选择器)。
  • 缓冲区由快速 B 树实现的 rope 支持背板(通过 cessen 的 ropey)。
  • 编辑树历史,也称为撤销/重做树
  • 使用 Tree-sitter 从您的代码中生成解析树。此 AST 用于语法突出显示和即时验证。作为一个增量解析库,它可以扩展到拥有 100 万行代码的文件。
  • 多缓冲区,多窗口 -- 共享状态优于多个编辑器的 tmux
  • 快速递归文件搜索,具有模糊匹配和忽略文件感知(使用 BurntSushi 的 ripgrep crates walkdirignore
  • 带目录导航的本地文件选择器
  • 一个实用编辑器,而不是 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-kCtrl + 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-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 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许可证定义的任何有意提交的包含贡献,均将按上述方式双许可,不附加任何额外条款或条件。

依赖项

~2MB
~36K SLoC