HeySpace
是一款帮你优化排版,提升阅读体验的「命令行工具」。
- 核心功能:中英文之间添加空格
- 去除连续两个以上的空行
- 兼容 Markdown 格式
- 支持剪贴板输入输出,复制内容处理后可直接粘贴
- 支持文件、目录的输入和输出;支持文件备份
以上内容均只在 Mac OS 下测试过。
排版前:
因为Go的
net/http
包提供了基础的路由函数组合与丰富的功能函数。所以在社区里流行一种用Go编写API不需要框架的观点,在我们看来,如果你的项目的路由在个位数、URI固定且不通过URI来传递参数,那么确实使用官方库也就足够。但在复杂场景下,官方的http库还是有些力有不逮。
排版后:
因为 Go 的
net/http
包提供了基础的路由函数组合与丰富的功能函数。所以在社区里流行一种用 Go 编写 API 不需要框架的观点,在我们看来,如果你的项目的路由在个位数、URI 固定且不通过 URI 来传递参数,那么确实使用官方库也就足够。但在复杂场景下,官方的 http 库还是有些力有不逮。
同时不影响 Markdown 的符号的正常使用,包括:
# 标题
1. 有序列表一
2. 有序列表二
- 无序列表一
- 无序列表二
*斜体* abc
**粗体** abc
> 引用:**念奴娇·赤壁怀古**
>
> 大江东去,浪淘尽,千古风流人物。故垒西边,人道是:三国周郎赤壁。乱石穿空,惊涛拍岸,卷起千堆雪。江山如画,一时多少豪杰。
>
> 遥想公瑾当年,小乔初嫁了,雄姿英发。羽扇纶巾,谈笑间、樯橹灰飞烟灭。故国神游,多情应笑我,早生华发。人生如梦,一樽还酹江月。
`small code block` 小代码块
```go
fmt.Println("大代码块")
```
在各种复杂的应用场景下,Markdown 文本的各类符号都(也许)能够得到有效排版(欢迎提 bug),这也是我写这个工具的初衷,因为其他中英文排版工具没有对 Markdown 文本作特殊处理。
比如粗体、斜体、小代码块的内容,与周边的词之间的关系;
比如跳过「代码块」内容的处理
go get github.com/louisun/heyspace
$ heyspace help
NAME:
HeySpace - 在中英文之间添加空格
USAGE:
heyspace [global options] command [command options] [arguments...]
VERSION:
v0.0.1
AUTHOR:
Renzo <[email protected]>
COMMANDS:
help, h Shows a list of commands or help for one command
GLOBAL OPTIONS:
--in value, -i value 输入文件路径 (default: 默认剪贴板输入)
--out value, -o value 输出文件路径 (default: 默认剪贴板输出)
--backup value, -b value 备份目录路径
--quiet, -q 不输出具体文件日志 (default: 关闭)
--help, -h show help (default: false)
--version, -v print the version (default: false)
不传入 -i
或 --in
参数,默认是从「剪贴板」获取输入,并输出到「剪贴板」便于粘贴。
➜ heyspace
- 步骤一:Copy 一段内容
- 步骤二:执行
heyspace
- 步骤三:Paste 处理之后的内容
而只要指定了
-i
参数,则以文件模式输出
-i
或 --in
参数如果是个文件,则会:
- 先备份文件,以防处理失败
- 若指定输出路径
-o
或-out
,则将处理后的内容写入输出路径
heyspace -i ~/Blog/Artical.md
上面的例子未指定输出路径,则默认覆盖
~/Blog/Artical.md
的内容,且由于未指定备份路径,会自动将原文件备份为~/Blog/Artical_bk.md
文件。
heyspace -i ~/Blog/Artical.md -o ~/Blog/Artical_new.md
上面的例子指定了输出路径为文件,则不进行备份(原文件即备份),处理排版后输出的文件为指定路径
heyspace -i ~/Blog/Aritical.md -o ~/Blog
上面的子指定了输出路径为目录,则不进行备份,且默认输出文件名为原名字加
_new
,即~/Blog/Artical_new.md
-i
或 --in
参数如果是个路径,则会:
- 先备份整个目录,以防处理失败
- 遍历目录下的 Markdown 文件,直接替换每个文件为排版后的内容
heyspace -i ~/Blog
上面的例子未指定备份目录,自动备份目录到
~/Blog_bk
,即原名字加后缀_bk
的目录。然后对~/Blog
目录下所有.md
结尾的文本文件进行排版处理。
-b
或 --backup
参数表示备份路径
heyspace -i ~/Blog -b ~/MyBlog
上面的例子指定备份目录,则备份目录到
~/MyBlog
,备份目录名可不存在。
heyspace -i ~/Blog -b nobackup
上面的例子表示不进行备份,原地替换
~/Blog
下的 Markdown 文件(谨慎使用)。
下面介绍我是怎么用这个工具的
# -q 或 --quiet 参数可以不输出一长串文件信息
# 暴力替换某个目录下的文件:
heyspace -i ~/Blog -b nobackup -q
# 做个备份
heyspace -i ~/Blog -b ~/somewhere -q
再次提醒,我是在 Mac OS 下使用的,需要 Mac OS
Automator
工具的帮助。
我用 ctrl + command + z
快捷键,执行这个 heyspace
脚本,可快速完成剪贴板内容的替换。
附上 shell 脚本:
# 设置编码
export LANG=en_US.UTF-8;
export LC_ALL=en_US.UTF-8;
# 执行 heyspace
/Users/louisun/.local/bin/heyspace;
# Mac 执行完发送通知的命令
osascript -e "display notification \"${strPrompt}\" with title \"排版成功,请粘贴\" sound name \"default\"";
然后在 设置 > 键盘 > 快捷键 > 服务 >
中对该脚本设置快捷键
复制内容后执行快捷键,效果如下:
在 Windows 下可以使用 AutoHotKey:
; control + alt + z
^!z::heyspace()
heyspace()
{
; replace with your bin path
RunWait, "C:\Users\Renzo\go\bin\heyspace.exe",,Hide
return
}