Linux命令行词典
使用了 kd,这是一个go编写的程序,支持daemon模式来提升性能。
直接kd $word_to_query 就可以使用了。
kd -h
NAME:
kd - A crystal clean command-line dictionary.
USAGE:
kd [global options]
VERSION:
v0.0.14
AUTHOR:
kmz <valesail7@gmail.com>
GLOBAL OPTIONS:
--text TEXT, -t TEXT translate long query TEXT with e.g. --text="Long time ago" 翻译长句
--json output as JSON
--nocache, -n don't use cached result 不使用本地词库,查询网络结果
--theme value, -T value choose the color theme for current query 选择颜色主题,仅当前查询生效 (default: temp)
--force, -f forcely update (only after --update) 强制更新(仅搭配--update)
--speak, -s (experimental) read the word with speaker program 单词朗读
--daemon ensure/start the daemon process 启动守护进程
--update check and update kd client 更新kd的可执行文件
--generate-config generate config sample 生成配置文件,Linux/Mac默认地址为~/.config/kd.toml,Win为~\kd.toml
--edit-config edit configuration file with the default editor 用默认编辑器打开配置文件
--help, -h show help
--version, -v print the version然后默认情况下无法模糊查询,在README.md里还是todo状态。
但是我们就做不到模糊查询了吗?
这个词典会从网络上下载一个SQLite词典数据库到 /.cache/kdcache/kd_data.db, 既然是这种通用的数据存储方式,那我们的操作空间就很多了。
进入数据库后能看到表的结构是这样的
sqlite3 kd_data.db
SQLite version 3.53.4 2026-07-24 19:02:57
Enter ".help" for usage hints.
sqlite> .schema
CREATE TABLE en (
query text NOT NULL UNIQUE PRIMARY KEY,
detail text NOT NULL,
update_time datetime NOT NULL) WITHOUT ROWID;
CREATE TABLE ch (
query text NOT NULL UNIQUE PRIMARY KEY,
detail text NOT NULL,
update_time datetime NOT NULL) WITHOUT ROWID;
sqlite>一份存中文,一份存英文。
我们只需要就可以获得全部的单词了, 这时候请出我们的fzf,可以让fzf候选单词,就实现了模糊查询单词, 利用fzf的–preview可以实现实时预览,然后利用expect包里的unbuffer可以实现彩色打印。select query from en
最终结果就是这样了
function k
if test (count $argv) -gt 0
kd $argv
return
end
sqlite3 ~/.cache/kdcache/kd_data.db "select query from en" \
| fzf \
--ansi \
--preview "unbuffer kd {}" \
--height "60%" \
--prompt="select> " \
--layout=reverse \
--input-border=rounded \
--list-border=rounded \
--preview-border=rounded \
--input-label=" input " \
--list-label=" word lists " \
--preview-label=" description " \
--pointer="❯" \
--marker="✓" \
--border=rounded \
--preview-window "right:65%:nowrap" \
--color="bg+:#3c3836,fg+:#fbf1c7,hl:#fabd2f,hl+:#fabd2f" \
--color="input-border:#83a598,list-border:#504945,preview-border:#b8bb26" \
--color="prompt:#fe8019,pointer:#fb4934,marker:#b8bb26,label:#ebdbb2" \
| xargs -r kd
end效果是

当然,它支持json输出,你可以自行用jq解析数据来更改fzf的preview脚本,更加灵活自由。