10 个稳定版本
3.6.1 | 2024 年 4 月 25 日 |
---|---|
3.6.0 | 2023 年 11 月 26 日 |
3.4.0 | 2023 年 10 月 17 日 |
3.3.0 | 2023 年 1 月 17 日 |
3.0.0 | 2020 年 3 月 26 日 |
在 命令行工具 中排名第 214
每月下载量 582
170KB
5K SLoC
Syncat
语法感知的 cat 工具。使用 Tree-sitter 解析文件并使用 ANSI 转义码为其着色,为命令行上打印的文件提供语法高亮。
功能
Syncat 旨在提供与标准 cat
和类似工具 Bat 相似的功能
- Git 集成 (
-g
) - 显示行结束 (
-e
) - 行号 (
-n
) - 多级框架 (
-f
或-ff
) - 文件连接
- 使用 Tree-sitter 精确解析任何文件类型
- 使用样式表自定义语法着色
尤其是,Syncat 与其他选项相比的优势在于它使用 Tree-sitter 而不是正则表达式进行解析,这使得它
- 非常快;
- 足够健壮,即使在语法错误的情况下也能提供有用的结果。
Syncat 不支持自动分页,但您可以使用 less -r
来处理。
安装
Syncat 可以从 crates.io 安装
cargo install syncat
配置
默认情况下,Syncat 随配置文件一起提供,如 syncat/config
中所示,提供未经验证的树-sitter 语法列表和一些为已知文件类型快速组合的高亮显示。
如果这个基本配置不足以满足您的需求,您可以自行配置 Syncat。通过复制以下文件夹并修改它们来完成此操作:syncat/config
。您也可能对复制我的个人 Syncat 配置感兴趣,该配置可以在 syncat-themes 仓库中找到。
在任一情况下,根据您的操作系统,在相应的配置目录中复制(或创建新文件),然后继续到以下部分。相应的目录是:
- Linux:
$HOME/.config/syncat/
- Mac:
$HOME/Library/Preferences/com.cameldridge.syncat/
- Windows: 不受官方支持
样式表
官方样式表(虽然有些不完整)可在 此处 获取。
样式表放置在配置目录下的子目录 style
中。您可以通过以下方式获取官方主题,或者自行创建此目录。
cd ~/.config/syncat # or `cd ~/Library/Preferences/com.cameldridge.syncat` for Mac users
git clone https://github.com/foxfriends/syncat-themes style
有关这些样式表自定义如何工作的完整文档,请参阅 syncat-themes 仓库中的 README。
语言
由于 Syncat 使用 Tree-sitter 进行解析,您必须下载和编译 Syncat 的 Tree-sitter 解析器。幸运的是,如果您指定了下载的内容,Syncat 可以处理下载和编译。
语言映射是一个名为 languages.toml
的简单 TOML 文件,位于配置文件夹的根目录。您可以尝试从 这里 开始。
此文件中的每个条目都描述了一种语言,是一个包含 4 或 5 个键的表格。以下示例条目将为 Syncat 样式表安装一个高亮程序。
[syncat-stylesheet] # The name here is arbitrary
# The URL of the Git repository where the language is defined
source = "https://github.com/foxfriends/syncat"
# Optional: The path within the repository to the tree-sitter package.
# Leave this out if the language is defined in the root of the repository.
path = "tree-sitter-syncat-stylesheet"
# The name of the directory to clone the `source` repository into. Typically
# this is the same name as the source repository, but you must specify it anyway.
library = "syncat"
# The name of this language. This value should be the same as the value listed
# in the `grammar.js` file from the repository.
#
# This name will also be the name of the stylesheet file used when highlighting
# this language.
name = "syncat_stylesheet"
# A list of file extensions which should be parsed using this language.
extensions = ["syncat"]
一旦您根据自己的喜好填写了此文件,命令 syncat install
将安装所有这些语言。稍后再次运行 syncat install
将更新所有语言,并安装任何新的语言。
使用方法
# Colours this file based on the extension
syncat src/main.rs
# Uses the shell expansion, colouring each file by its own extension
syncat src/*.rs
# Colours the file using a specific language
syncat -l js src/package.json
# Installs (or updates) all languages listed in the `languages.toml` file
syncat install
# Installs only a specific entry in the `languages.toml` file
syncat install rust
# Uninstalls a language. A few points to note:
# * The language must still be listed in the `languages.toml` file.
# * This does not remove the file from `languages.toml`, only deletes its installation.
syncat remove rust
# Show information about all languages listed in `languages.toml`
syncat list
依赖关系
~15–27MB
~492K SLoC