自动纠正文章中的格式 autocorrect

发现一个好用的工具 autocorrect ,是 GitHub 上一个开源项目。官方介绍:

AutoCorrect 是一个基于 Rust 编写的工具,用于「自动纠正」或「检查并建议」文案,给 CJK(中文、日语、韩语)与英文混写的场景,补充正确的空格,纠正单词,同时尝试以安全的方式自动纠正标点符号等等。

感觉好像挺不错的,我可以使用它,自动给文字中的英文加空格。

看了下 https://github.com/huacnlee/autocorrect/releases ,里面有提供 Windows 的可执行文件,当然是命令行版本的,这工具并没有 GUI 的程序。于是我下载来体验看看。

基础用法 –lint

lint 这个单词我查了一下

n. 软麻布;线头;棉绒
vi. 飞散出棉线

这里难道是指,我们文章中那些不规范的地方,就像是线头?

autocorrect.exe --lint C:\text.md

使用起来很简单,命令名 参数 文件路径,执行后会快速检查文本中的内容。我使用的是一个 markdown 文件,里面的字数有 2 万 3(由 typora 统计的)

autocorrect

检测只用了不到 55 毫秒,确实很快。红色的就是我原本的内容,绿色的就是它建议修改后的格式。--lint 只是显示建议而已,不会直接修改文件的。

感觉还不错:

  • 中英混写的,它会建议加空格。
  • 汉字和阿拉伯数字也是建议加空格。
  • 多余的空格会建议删掉

我建立了个 txt 文件,写下这些内容

python

javascript

你好,haha。。。。

检测后是没有错误,我还预期它会改正写法呢,改为 Python,JavaScript。按理说这个应该不难,可能是有其它方面的考虑吧,例如改到代码之类。

不过我这四个句号 。。。。,肯定是不规范吧,我还期待看它会怎么改呢。

完整参数

通过执行 -h 可以查看说明

autocorrect -h
A linter and formatter for help you improve copywriting, to correct spaces, words, punctuations between CJK (Chinese, Japanese, Korean).

Usage: autocorrect.exe [OPTIONS] [FILE]... [COMMAND]

Commands:
init Initialize AutoCorrect config file.
update Update AutoCorrect to latest version.
help Print this message or the help of the given subcommand(s)

Arguments:
[FILE]... Target filepath or dir for format. [default: .]

Options:
--lint Lint and output problems.
--fix Automatically fix problems and rewrite file.
--debug Print debug information.
--format <FORMAT> Output format. [default: diff] [possible values: diff, json]
--threads <THREADS> Number of threads, 0 - use number of CPU. [default: 0]
-c, --config <CONFIG> Special config file. [default: .autocorrectrc]
--type <FILETYPE> Directly use set file type.
--stdin Input text from <STDIN>
--no-diff-bg-color Disable diff background color for diff output.
-h, --help Print help
-V, --version Print version

我们可以先使用 lint检测问题,确认之后,使用 fix来改正。

autocorrect.exe --fix C:\text.md

配置文件

使用 --config 还能使用配置文件,需要先初始化一下

PS C:\bin> .\autocorrect.exe init
Fetching https://github.com/huacnlee/autocorrect/raw/main/.autocorrectrc.template
AutoCorrect init config: .autocorrectrc
PS C:\bin> ls


目录: C:\bin


Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2023/3/16 21:10 2025 .autocorrectrc
-a---- 2023/2/9 0:19 9476096 autocorrect.exe

这样它就会从 GitHub 下载模板,然后在当前目录下保存为 .autocorrectrc。此时我再来执行检测

C:\Users\powersee\Downloads\test.txt:3:1
-javascript
+JavaScript

C:\Users\powersee\Downloads\test.txt:7:1
-Youtube
+YouTube


Error: 0, Warning: 2

下载模板之后,再来检测,就会出建议了。不过这里是 Warning,执行 fix 是不会改正的。

此时我只要修改配置文件,改为

spellcheck: 1

再次检测,刚才的两个 Warning,就变成 Error 了。再使用 fix 就可以改正了。

因为这个配置,是使用数字来控制的。

0 - off, 1 - error, 2 - warning

如果我不想要它检查英文的大小写,直接设置为 0 就行。

之所以之前检查 javascript 没问题,下载好配置文件后,就发现问题。是因为配置文件里有这部分

spellcheck:
words:
# Please do not add a general English word (eg. apple, python) here.
# Users can add their special words to their .autocorrectrc file by their need.
- ActiveMQ
- AirPods
- Aliyun
……
- JavaScript

里面定义了 JavaScript 为正确写法。(看到这里我才意识到,python 是一个英文单词,蟒蛇,所以不应该被添加进配置文件里面。)

那在这个配置文件里,我们应该可以自己添加单词,例如我想把文章中,powersee 改为 Powersee,那我只需要把 Powersee添加进去就行。

然而当我添加进去之后,我发现,检查不出任何错误了……不管我添加了在开头,还是在结尾,都不行。甚至在中间也不行,反正只要我添加任何单词进去,这个配置文件就好像失效了。

所以目前我还没弄懂怎么回事,以后要是弄明白自己自定义这部分,再来更新吧。

不用命令行

如果只是想改正一篇文章而已,那可以不用去下载这个命令行工具,直接访问 https://huacnlee.github.io/autocorrect ,把文章内容粘贴进去,在网页里修改就行了。

而且它还有 vscode 的插件,我安装好后,直接用 vscode 打开我的文章就行了。

事实上,刚装好,我就把插件给停用了。

原因是我文章里有这么一段

看了下 https://github.com/huacnlee/autocorrect/releases ,里面有提供 Windows 的可执行文件

我的链接后面是加了空格,再用逗号的。那么使用插件的话,会检测到这个空格,它觉得是多余的,要求我删掉。那么删掉之后,我的链接就错误了,因为会把逗号以及后面的汉字,一起识别为 url 的一部分。也就是说这个空格是必须要有的。

但是,此时我没法把它加回来,因为加回空格之后,再保存,插件会自动把空格去掉……看来我这种情况,不适合使用这个插件。