#语法高亮 #源代码 #Tree-sitter #编辑器 #解析树 #zee

zee-highlight

用于使用 zee 的类似 CSS 规则突出显示源代码的工具

5 个不稳定版本

0.3.0 2022年4月16日
0.2.1 2022年4月10日
0.2.0 2022年4月10日
0.1.1 2020年3月15日
0.1.0 2020年3月8日

#451 in 文本编辑器


zee 中使用

Apache-2.0

24KB
581

Zi logo

Build Status Crates.io

Zee 是一个终端的现代编辑器,秉承 Emacs 精神。它用 Rust 编写,具有一定的实验性。

遵循传统文本编辑器演示风格,以下是它编辑自己源代码的当前样子

Peek 2020-03-09 00-16

特性

  • 100 FPS 编辑器。光标移动和编辑在10ms以下完成。其他一切操作都异步执行(语法解析和突出显示,磁盘的输入/输出,文件选择器)。
  • 缓冲区由快速 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

重要:请注意,此指令获取的代码库状态可能包含正在开发中的功能,在包含到下一个稳定版本的发布中可能需要进一步的维护。

配置

使用配置目录中的 config.ron 文件来定制 Zee。

要创建默认配置文件,请使用命令行参数 --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 初始化配置目录,并立即下载和构建配置的树形解析器。有关 --build 命令行参数的详细信息,请参阅下文。

语法高亮

Zee 使用 Tree-sitter 解析器进行语法高亮和源代码的即时验证。每个 Tree-sitter 解析器都被编译成一个共享对象,并动态链接。要下载和构建解析器,只需运行

zee --build

解析器被下载、编译并放置在配置目录内的 grammars 目录中。确切位置取决于系统,例如在 Linux 或 macOS 上为 ~/.config/zee/grammars,在 Windows 上为 %AppData%/zee/grammars

解析器是配置文件中配置的解析器,或者如果没有找到配置文件,则是默认解析器。

如果您更改了 config.ron 文件中的解析器,您必须重新运行构建命令。

从源代码构建

Zee 用 Rust 编写,需要最新稳定的编译器来构建。您可以使用 cargo 按照预期构建它

git clone https://github.com/zee-editor/zee.git && cd zee
cargo run -- zee/src/main.rs

编辑器还依赖于树形解析器,每种支持的语言一个,请参阅 配置。每个树形解析器都被编译成一个共享对象,并动态链接。

运行 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-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许可证定义,您有意提交的任何贡献,将按上述方式双授权,不附加任何额外条款或条件。

依赖项

~4.5–6.5MB
~126K SLoC