Giter Site home page Giter Site logo

karmenzind / kd Goto Github PK

View Code? Open in Web Editor NEW
42.0 1.0 2.0 178 KB

跨平台命令行词典 a command-line dictionary supported Linux/Win/Mac

License: MIT License

Makefile 0.91% Go 85.11% Shell 5.37% PowerShell 0.42% Python 7.65% Dockerfile 0.53%
dictionary youdao wudao dict translate

kd's Introduction

🌠 a crystal clear command-line dictionary, written in Go, supported Linux/Win/Mac

Go语言实现的简洁好用的命令行词典,跨平台、易于安装、持续维护更新

本项目受无道词典启发,在复刻Wudao核心功能的基础上增加了更丰富的特性。我是Wudao的多年用户,日常工作生活重度依赖随手wd abandon,但可惜这个项目已经很久未更新,且存在一些可以优化的地方,所以忍不住重写了一个,选择Go是为了方便地解决安装和跨平台问题。

TOC

☑️ 特性

  • 单文件运行,多平台兼容,无需安装任何依赖。Windows运行截图:

  • 支持查单词、词组,本地词库(10W+),可离线使用

    运行时后台会自动下载数据库

  • 支持-t翻译长句 👀

  • 极速响应,超低延迟 ⚡

  • 灵活的配置项,支持修改代理、配色等

  • 其他小功能:

    • 多次查询相同词汇会出现提醒并加入生词本

    • 支持纯英文模式,只显示英译/英文例句

    • kd --update命令一键更新版本

更多功能正在开发中 👽

🚀 安装和升级

  • 这里下载位置为示例,可以下载到任何地方,然后将路径加入PATH环境变量
  • 其他架构需求请提交issue

Linux/MacOS

在终端中执行:

bash -c "$(curl -fsSL https://raw.githubusercontent.com/Karmenzind/kd/master/scripts/install.sh)"

如果raw.githubusercontent.com被屏蔽,改用git clone https://github.com/Karmenzind/kd && bash kd/install.sh

或者按照平台/架构复制命令(🖱️ 点击展开)
```bash
# Linux amd64 (x86-64)
sudo sh -c 'curl --create-dirs -L -o /usr/local/bin/kd https://github.com/Karmenzind/kd/releases/latest/download/kd_linux_amd64 && chmod +x /usr/local/bin/kd'
# MacOS arm64 (即M1/M2/M3芯片的架构)
sudo sh -c 'curl --create-dirs -L -o /usr/local/bin/kd https://github.com/Karmenzind/kd/releases/latest/download/kd_macos_arm64 && chmod +x /usr/local/bin/kd'
# MacOS amd64 (x86-64)
sudo sh -c 'curl --create-dirs -L -o /usr/local/bin/kd https://github.com/Karmenzind/kd/releases/latest/download/kd_macos_arm64 && chmod +x /usr/local/bin/kd'
# Linux arm64
sudo sh -c 'curl --create-dirs -L -o /usr/local/bin/kd https://github.com/Karmenzind/kd/releases/latest/download/kd_linux_arm64 && chmod +x /usr/local/bin/kd'
```

ArchLinux

ArchLinux推荐直接通过AUR安装/更新,例如:yay -S kd

Windows

用非管理员模式的Powershell执行:

# 下载文件放入C:\bin,这里是amd64(x86-64)架构
Invoke-WebRequest -uri 'https://github.com/Karmenzind/kd/releases/latest/download/kd_windows_amd64.exe' -OutFile ( New-Item -Path "C:\bin\kd.exe" -Force )
# 将C:\bin加入PATH环境变量
[Environment]::SetEnvironmentVariable("Path", $env:Path + ";C:\bin", "User")

或手动下载文件,然后通过“计算机->属性->修改环境变量”修改PATH

卸载

🖱️ 点击展开
1. 删除kd可执行文件(Linux/Mac:/usr/local/bin/kd,Win:C:\bin\kd.exe)
2. 删除配置文件和缓存目录
    - Linux: `rm -rfv ~/.config/kd.toml ~/.cache/kdcache`
    - MacOS: `rm -rfv ~/.config/kd.toml ~/Library/Caches/kdcache`
    - Win: `rm ~\kd.toml ~\kdcache`

如果通过AUR安装,则直接通过AUR管理工具卸载,例如:yay -Rs kd

⚙️ 用法和配置

直接执行kd <text>查单词、词组(如kd abandonkd leave me alone

完整用法如下:

❯ kd --help
NAME:
   kd - A crystal clean command-line dictionary.

USAGE:
   kd [global options] [arguments...]

GLOBAL OPTIONS:
   --nocache, -n                        don't use cached result 不使用本地词库,查询网络结果
   --theme value, -T value              choose the color theme for current query 选择颜色主题,仅当前查询生效 (default: temp)
   --server                             start server foreground 在前台启动服务端
   --daemon                             ensure/start the daemon process 启动守护进程
   --update                             check and update kd client 更新kd的可执行文件
   --generate-config                    generate config sample 生成配置文件,默认地址为~/.config/kd.toml
   --edit-config                        edit configuration file with the default editor 用默认编辑器打开配置文件
   --help, -h                           show help
   --version, -v                        print the version

📁 配置文件地址:Linux/MacOS为~/.config/kd.toml,Windows为~/kd.toml

以下为可配置项和默认值,可执行kd --generate-config生成默认配置文件,执行kd --edit-config直接用编辑器打开配置文件

# 是否使用分页器,MacOS上默认false
paging = true
# 分页器命令,例如:less -F / bat / (不推荐) more -e
pager_command = "less -F"

# 结果中只显示英文(英译、英文例句等)
english_only = false

# 颜色主题,支持:temp/wudao
theme = "temp"

# 格式:http://<IP或域名>:<端口>。设置为空时,系统代理依然会生效
# 如果需要频繁查询长句,可设置此项,否则本地IP有一定概率会被有道服务器暂时屏蔽
http_proxy = ""

# 输出内容前自动清空终端,适合强迫症
# 是否开启频率提醒:本月第X次查询xxx
freq_alert = false

# (开发中)安装了emoji字体的可以输出一些emoji字符,just for fun
enable_emoji = true

# 日志配置
[logging]
  # 开启日志记录
  enable = false
  # 默认值:Linux/MacOS为/tmp/kd_<username>.log,windows为%TMPDIR%/kd_<username>.log
  path = ""
  # 日志级别,支持:DEBUG/INFO/WARN/PANIC/FATAL
  level = "WARN"

🎈 提升体验技巧

使用tmux的悬浮窗口显示结果

如果你在使用tmux,借助悬浮窗口(popup)能让查询体验更舒适友好 🍭

在bash/zsh的配置文件中加入:

if [[ -n $TMUX ]]; then
    __kdwithtmuxpopup() {
        tmux display-popup "kd $@"
    }
    alias kd=__kdwithtmuxpopup
fi

通过systemd管理daemon进程

为避免每次开机后第一次查询都要等待守护进程启动,可以创建service文件/usr/lib/systemd/user/kd-server.service,然后执行systemctl enable --user kd-server,daemon进程将随系统自动启动

内容参考kd-server.service

🎨 颜色主题

目前支持以下配色,后续会增加更多。如果不希望输出颜色,设置环境变量NO_COLOR=1即可

  • temp 暂定的默认配色

  • wudao 复刻Wudao Dict的配色,鲜明易读

❓ 常见问题和解决方法

设置less为Pager后显示异常

目前发现MacOS/Debian Bookworm设置less为分页器后,颜色渲染会失败,尚未解决。如果其他平台遇到此问题,请提交issue

解决方案:

  • 改用其他pager程序,如bat/more
  • 关闭pager,配置文件中设置paging = false
  • 如果还想使用less作为分页器,可在shell中设置alias,例如bash/zsh可在bashrc/zshrc中添加:
__kdwithpager() {
  kd ${@} | less -F
}
alias kd=__kdwithpager

MacOS弹出“无法打开”提醒

如果弹出“无法打开,因为Apple无法检查是否包含恶意软件”的提示,请执行:

sudo xattr -r -d com.apple.quarantine <kd文件所在路径>

📝 进度和计划

近期

  • 支持bash/zsh/fish补全,包含命令补全和热词补全
  • 支持生词本功能

长期

  • 增加多种主题,包含常见配色如Gruvbox/Molokai,仿照bat实现
  • 支持全模块自定义显示配置
  • 引入多种查询源和词库,如stardict、bing等
  • 增加远程服务端
  • 支持通过fzf补全
  • Vim插件,浮窗显示查词结果
  • 离线词库周期更新

kd's People

Contributors

karmenzind avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

szdytom dreamsxin

kd's Issues

请求添加功能

请问可不可以添加一个像无道那样的交互模式和简明模式啊,在需要查大量单词的时候希望可以不输入kd。

broke on Win

image

不行就干脆runs-on win,不用跨平台编译了

显示错误

Screenshot_2024-05-06-09-03-08_2560x1440

fish, version 3.7.1

kitty 0.33.1 created by Kovid Goyal

awesome v4.3-1654-g8b1f8958b-dirty (Too long)
• Compiled against Lua 5.4.6 (running with 0.9.2)
• API level: 4
• D-Bus support: yes
• xcb-errors support: yes
• execinfo support: yes
• xcb-randr version: 1.6
• LGI version: /usr/share/lua/5.4/lgi/version.lua
• Transparency enabled: yes
• Custom search paths: no

删除旧版本,安装新版本一直失败

一直遇到这个问题mv: fastcopy: open() failed (to): /usr/bin/kd: Operation not permitted,我使用sudo命令也无济于事,请问如何解决?
,xNMM. -------------
.OMMMMo OS: macOS 14.5 23F79 arm64
OMMM0, Host: MacBookPro18,1
.;loddo:' loolloddol;. Kernel: 23.5.0
cKMMMMMMMMMMNWMMMMMMMMMM0: Uptime: 1 day, 23 hours, 58 mins
.KMMMMMMMMMMMMMMMMMMMMMMMWd. Packages: 88 (brew)
XMMMMMMMMMMMMMMMMMMMMMMMX. Shell: zsh 5.9
;MMMMMMMMMMMMMMMMMMMMMMMM: Resolution: 1728x1117
:MMMMMMMMMMMMMMMMMMMMMMMM: DE: Aqua
.MMMMMMMMMMMMMMMMMMMMMMMMX. WM: Rectangle
kMMMMMMMMMMMMMMMMMMMMMMMMWd. Terminal: iTerm2
.XMMMMMMMMMMMMMMMMMMMMMMMMMMk Terminal Font: JetBrainsMonoNF-Bold 18 (normal) / MesloLGS-NF-Bold 19 (non-ascii)
.XMMMMMMMMMMMMMMMMMMMMMMMMK. CPU: Apple M1 Pro
kMMMMMMMMMMMMMMMMMMMMMMd GPU: Apple M1 Pro
;KMMMMMMMWXXWMMMMMMMk. Memory: 3648MiB / 32768MiB
.cooc,. .,coo:.

查询结果显示问题

同该issue
图片

OS: Arch Linux x86_64
Host: Windows Subsystem for Linux - Arch (2.2.4)
Kernel: Linux 5.15.153.1-microsoft-standard-WSL2
Uptime: 11 hours, 49 mins
Packages: 181 (pacman)
Shell: fish 3.7.1
Display (rdp-0): 2560x1440 @ 60Hz
WM: WSLg (Wayland)
Terminal: xterm-256color

更换pager为bat后正常

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.