#tree-sitter #editor #syntax-highlighting #syntax-tree #zee #grammar

zee-grammar

用于zee的tree sitter语法的包装器

7个版本

0.3.0 2022年4月16日
0.2.3 2022年4月10日
0.1.2 2020年3月30日

463文本编辑器


用于zee

Apache-2.0

17KB
426

Zi logo

Build Status Crates.io

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

按照传统文本编辑器演示的做法,以下是其目前编辑自身源代码的样子

Peek 2020-03-09 00-16

特性

  • 100 FPS编辑器。光标移动和编辑在10ms以下渲染。其他所有操作都异步进行(语法解析和突出显示、磁盘IO、文件选择器)。
  • 缓冲区由一个快速B树实现的rope(通过cessen的ropey)支持。
  • 编辑树历史记录,即撤销/重做树
  • 使用Tree-sitter从您的代码生成解析树。这个AST用于语法突出显示和即时验证。作为增量解析库,它可以扩展到包含100万行代码的文件。
  • 多缓冲区,多窗格 -- 共享状态 优于 tmux的多编辑器
  • 快速递归文件搜索,具有模糊匹配和忽略文件意识(使用BurntSushi的ripgrep crate walkdirignore
  • 带目录导航的本地文件选择器
  • 一个实用主义的编辑器,而不是CRDTs的研究项目

入门指南

安装zee推荐的方式是使用cargo

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初始化配置目录,并立即下载和构建配置的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-y快捷键。使默认的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中的粘贴)
  • 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 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许可证定义的任何有意提交的包含贡献,将根据上述方式双许可,不附加任何额外条款或条件。

依赖项

~5–17MB
~183K SLoC