12 个版本 (3 个稳定版)
1.0.2 | 2023 年 4 月 25 日 |
---|---|
1.0.1 | 2022 年 11 月 12 日 |
1.0.0 | 2022 年 7 月 17 日 |
0.8.1 | 2022 年 3 月 12 日 |
0.3.0 | 2021 年 6 月 12 日 |
#444 在 文本处理
每月 38 次下载
150KB
4K SLoC
skyspell
命令行的快速便捷拼写检查器。
特性
- 便捷的命令行界面
- 利用优秀的 enchant 库,因此与现有提供者和词典兼容
- 手工制作的标记器,这意味着
- 它可以解析
camelCase
和snake_case
标识符 - 它知道如何跳过 URL、sha1 等内容
- 它可以处理类似于
HTTPError
的缩写 - ... 更多功能!
- 它可以解析
- 全局忽略列表
- 按文件扩展名(例如,对于
fn
对.rs
))为文件、项目或项目内的相对路径创建忽略列表 - 按文件名创建忽略列表(例如,始终跳过名为
Cargo.lock
的文件) - 在项目内部按相对路径创建忽略列表(例如,
image.svg
) - Kakoune 集成
- 忽略规则存储在全局 sqlite3 数据库中(适用于个人文件等)或配置文件中(适用于 CI 等)
安装
您需要
- 安装 C Enchant 库及其开发头文件
- 安装 sqlite3 库及其开发头文件
- Enchant 的其中一个后端(aspell、hunspell、nuspell)
- 与上述后端匹配的您将要使用的语言的词典(例如
aspell-en
或hunspell-fr
)。 cargo
然后运行
$ cargo install skyspell
并确保 skyspell
在您的 PATH
中。
检查设置
运行 skyspell suggest helllo
,并检查单词 hello
是否被建议。
skyspell 在行动中
通常,您会运行 skyspell check
以启动一个交互式会话,在此会话中,您将告诉 skyspell
如何处理它在你项目文件中找到的所有错误。
$ skyspell check
LICENSE:9:2 Redistributions
What to do?
a : Add word to global ignore list
e : Add word to ignore list for this extension
p : Add word to ignore list for the current project
f : Add word to ignore list for the current file
x : Skip this error
q : Quit
> : g
=> Added 'Redistributions' to the global ignore list
foo.rs:32:2 fn
What to do?
a : Add word to global ignore list
e : Add word to ignore list for this extension
p : Add word to ignore list for the current project
f : Add word to ignore list for the current file
x : Skip this error
q : Quit
> : e
=> Added 'fn' to the ignore list for '.rs' files
请注意,默认情况下,skyspell 将尝试读取项目中的每个文件。为了防止 skyspell 尝试读取某些文件,请创建一个包含如下内容的 skyspell-ignore
kdl 文件
patterns {
Cargo.lock // no point in checking auto-generated files
logo.png // no point in trying to read non-text files
}
默认情况下,忽略规则将在运行上述会话时自动添加到该文件中,结果文件如下所示
patterns {
// same as above
}
global {
// always ignored
your-name
}
project {
// ignored just for this project
your-project-name
}
extension "rs" {
// ignored for this extension
fn
impl
}
这样,您就可以与他人分享您的忽略规则。
顺便说一下,有一个 --non-interactive
选项可以将 skyspell check
作为持续集成的一部分运行。
使用 sqlite3 数据库代替
如果您不希望上述行为,可以使用以下方式告诉 skyspell 将忽略规则存储在全局 sqlite3 数据库中
patterns {
// Same patterns as above
}
use_db
默认情况下,路径将是 ~/.local/share/skyspell/<lang>.db
,但您可以使用 --db-path
来更改它。
与 scspell 的比较
我从 scspell 中借鉴了很多东西,包括实现和命令行行为。
请注意,scspell 不依赖于 Enchant,因此不能检查除英语以外的语言,也不能为拼写错误提供建议。
但它的实现更简单,不需要安装拼写提供程序。
另一方面,scspell 可以自动在文件中应用替换,这是 skyspell
没有的功能。
本地开发
为了更快地构建和运行测试,您可以使用
依赖关系
~32–43MB
~717K SLoC