你还在手敲长命令?这个 Shell 插件帮你自动提醒别名和现代替代工具

你还在手敲长命令?这个 Shell 插件帮你自动提醒别名和现代替代工具

每天在终端里敲命令的你,是否也遇到过这些场景:明明设了 alias gs='git status',却总是习惯性地敲完整的 git status?用 cat 查看文件却不知道 bat 能给你语法高亮和行号?写了一长串 find . -name "*.log" -type f,完全忘了 fd 更快更简洁?

如果你也有这些困扰,那 you-should-use 这个 Shell 插件就是为你打造的。

项目简介

you-should-use 是一个跨 Shell 的智能提醒插件,支持 Zsh、Bash、Fish、Nushell 四种主流 Shell。它的核心理念很简单:让你的终端帮你养成好习惯

它做三件事:

  1. 别名提醒 --- 当你手动输入了一个已有别名的命令时,温柔地提醒你
  2. 现代工具建议 --- 当你使用老旧命令时,建议已安装在你系统上的 Rust/Go 现代替代品
  3. AI 智能建议 --- 通过本地 Ollama 大模型,给出更优雅的命令写法

项目主页:ysu.codelife.me | GitHub:vangie/you-should-use


为什么需要这样一个插件?

问题一:别名设了等于没设

我们经常在 .zshrc 里写一堆 alias:

bash 复制代码
alias gs='git status'
alias gc='git commit'
alias gp='git push'
alias ll='ls -la'
alias k='kubectl'

但实际使用时,手指比脑子快,总是习惯性地敲完整命令。久而久之,alias 形同虚设。

you-should-use 的做法:每次你输入完整命令时,它会在输出后轻轻提醒一句:

bash 复制代码
$ git status
YSU ~> You have an alias: gs

不阻断你的工作流,只是一个友好的提示。���天下来,你会发现自己不知不觉就开始用 alias 了。

问题二:不知道有更好的工具

Rust 和 Go 社区这几年造了一大批优秀的命令行工具,性能更好、输出更美观、使用更友好。但很多人根本不知道它们的存在,或者知道了却懒得换。

you-should-use 的做法 :当你用 catlsfind 等老命令时,如果你的系统上已经装了现代替代品,它会自动建议:

bash 复制代码
$ cat README.md
YSU ~> Try bat instead of cat --- Syntax highlighting, line numbers
       install: brew install bat

$ ls -la
YSU ~> Try eza -la instead of ls -la --- Modern listing with icons

$ grep -r "TODO" .
YSU ~> Try rg "TODO" instead of grep --- Faster, respects .gitignore

注意最后一行的 install hint:如果你系统上没有装 bat,它还会告诉你怎么装。而且它能自动检测你的包管理器(brew / apt / pacman / dnf 等),给出正确的安装命令。

问题三:命令写得不够优雅

有些命令虽然能用,但写法可以更好。比如一长串管道组合、冗余的参数、或者可以用一个命令替代的多步操作。

you-should-use 的做法:集成本地 LLM(支持 Ollama),异步分析你的命令并给出改进建议。完全本地运行,不发送任何数据到外部服务器。

vbnet 复制代码
$ find . -name "*.py" -exec grep -l "import os" {} \;
YSU ~> [AI] Try: rg -l "import os" --type py
       Faster and simpler with ripgrep's built-in file type filter

内置命令映射一览

插件内置了丰富的现代命令映射,覆盖了最常用的命令行工具:

旧命令 现代替代 改进点
cat bat 语法高亮、行号、Git 集成
ls eza / lsd 图标、Git 状态、树形视图
find fd 语法更简单、速度更快、尊重 .gitignore
grep rg / ag Ripgrep 速度碾压,尊重 .gitignore
du dust / ncdu 可视化磁盘使用
top btop / htop 颜值在线的资源监控
ps procs 现代化进程查看器
diff delta 语法高亮、并排对比
sed sd 正则语法更直觉
curl httpie 人类友好的 HTTP 客户端
man tldr 社区驱动的简化手册
cd zoxide 智能学习你的 cd 习惯
vim nvim 现代化的 Vim 分支
dig dog 带颜色的 DNS 客户端
ping gping 带图表的 ping

只有当现代替代工具确实安装在你系统上时,才会触发建议。不会推荐你没装的东西。

当有多个替代品时(比如 lsezalsd),会优先推荐第一个已安装的。你也可以自定义映射:

bash 复制代码
typeset -gA YSU_MODERN_COMMANDS
YSU_MODERN_COMMANDS=(
  cat    "bat:语法高亮神器"
  ls     "eza:现代文件列表|lsd:带图标的 ls"
  vim    "nvim:Neovim"
)

安装极其简单

方式一:Homebrew(macOS 推荐)

bash 复制代码
brew install vangie/formula/you-should-use

方式二:一行命令安装

bash 复制代码
curl -fsSL https://raw.githubusercontent.com/vangie/you-should-use/main/install.sh | sh

自动检测你的 Shell 类型,克隆仓库,配置 rc 文件,一步到位。

方式三:插件管理器

oh-my-zsh

bash 复制代码
git clone https://github.com/vangie/you-should-use \
  ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/you-should-use

# 然后在 ~/.zshrc 中添加:
plugins=(... you-should-use)

zinit

bash 复制代码
zinit light vangie/you-should-use

Fisher (Fish)

fish 复制代码
fisher install vangie/you-should-use

支持的插件管理器还包括 zplug、Antidote、Oh My Fish 等,详见 README


丰富的配置选项

频率控制 --- 不打扰你

担心提醒太频繁?可以设置概率和冷却时间:

bash 复制代码
YSU_PROBABILITY=50    # 50% 概率显示提示
YSU_COOLDOWN=30       # 两次提示之间至少间隔 30 秒

排除列表

某些 alias 你就是不想用?可以排除:

bash 复制代码
YSU_IGNORE_ALIASES="g gc"       # 不提醒这些 alias
YSU_IGNORE_COMMANDS="cat ls"    # 不建议这些命令的替代品

自定义消息格式

bash 复制代码
YSU_MESSAGE_FORMAT="{prefix} {arrow} {message}"
# 支持占位符:{prefix}、{arrow}、{message}

主题系统

内置多款深色/浅色主题,终端颜色和谐统一:

bash 复制代码
YSU_THEME="dark"
YSU_DARK_THEME="tokyo-night"    # 还支持 dracula, monokai, catppuccin-mocha
YSU_LIGHT_THEME="solarized"     # 还支持 catppuccin-latte, github

AI 智能建议(Ollama 集成)

这是 you-should-use 最有趣的功能之一。如果你本地运行了 Ollama,插件会自动检测并启用 AI 建议,无需任何配置。

工作原理

  1. 你执行一条命令
  2. 插件在后台异步发送给本地 LLM 分析
  3. 下一次按回车时,显示 AI 的建议
  4. 结果会缓存,相同模式的命令不会重复请求

完全本地运行,你的命令不会离开你的机器。

单命令 vs 多命令分析

bash 复制代码
YSU_LLM_MODE="single"    # 逐条分析(默认)
YSU_LLM_MODE="multi"     # 分析最近 N 条命令的组合模式
YSU_LLM_MODE="both"      # 两者都启用
YSU_LLM_WINDOW_SIZE=5    # 多命令窗口大小

多命令模式特别有用 --- 它能发现你的工作流模式,比如你总是先 cd、再 git pull、再 npm install,它可能会建议你写一个 shell function 来一步完成。

兼容任何 OpenAI 接口

虽然默认对接 Ollama,但支持任何 OpenAI 兼容的 API:

bash 复制代码
YSU_LLM_API_URL="https://api.openai.com/v1"
YSU_LLM_API_KEY="sk-..."
YSU_LLM_MODEL="gpt-4o-mini"

实用子命令

you-should-use 不只是一个被动的提醒插件,它还提供了一系列实用命令:

ysu status --- 配置仪表盘

一览你的所有配置、统计信息、LLM 状态:

bash 复制代码
$ ysu status
╭─ you-should-use status ─────────────────────╮
│ Alias Reminders:  ✓ enabled                  │
│ Modern Suggest:   ✓ enabled                  │
│ LLM Suggest:      ✓ enabled (auto: qwen2.5) │
│ Theme:            dark (tokyo-night)          │
│ Cache entries:    42                          │
│ Package manager:  brew                        │
╰──────────────────────────────────────────────╯

ysu discover --- 别名发现

扫描你的 Shell 历史记录,找出高频重复命令,建议你创建 alias:

bash 复制代码
$ ysu discover
  git checkout -b  (used 47 times)
    alias gcb='git checkout -b'

  docker compose up  (used 23 times)
    alias dcu='docker compose up'

  kubectl get pods  (used 19 times)
    alias kgp='kubectl get pods'

ysu doctor --- 诊断工具

遇到问题?跑一下诊断:

bash 复制代码
$ ysu doctor
✓ Shell: zsh 5.9 (compatible)
✓ Hooks: preexec/precmd registered
✓ Load time: 12ms
✓ Config: no conflicts
✓ Package manager: brew
✓ Ollama: connected (model: qwen2.5-coder:7b)
✓ Dependencies: curl ✓, jq ✓, md5sum ✓

其他命令

  • ysu config --- 交互式配置向导(含主题预览)
  • ysu cache clear/size --- LLM 缓存管理
  • ysu update --- 一键更新到最新版
  • ysu uninstall --- 干净卸载(自动检测安装方式)

技术亮点

作为开发者,你可能会对一些实现细节感兴趣:

跨 Shell 架构

  • Zsh :使用 preexec/precmd 钩子
  • Bash :使用 DEBUG trap + PROMPT_COMMAND(兼容 Bash 3.2+)
  • Fish :使用 fish_preexec 事件 + 并行数组
  • Nushell :使用 pre_execution 钩子 + 结构化数据

四种 Shell 功能完全对齐,配置变量统一为 YSU_ 前缀。

智能别名解析

不只是简单的字符串匹配。支持:

  • sudo 前缀剥离sudo git status 也能匹配到 gs 别名
  • 链式别名解析:嵌套的 alias 也能正确识别
  • zsh-abbr 兼容:支持 zsh-abbr 的缩写格式

LLM 异步 + 缓存

  • 完全异步:后台 curl 请求,不阻塞终端
  • 智能缓存:相同命令模式的结果存储在 ~/.cache/ysu/
  • 只在有意义时触发:退出码非 0、包含管道/重定向、参数较多时

237+ 自动化测试

使用 bats-core 测试框架,覆盖 Zsh、Bash、Fish 三种 Shell,GitHub Actions CI 全自动运行。


与同类项目的区别

你可能知道 MichaelAqworter/zsh-you-should-use,那是一个很棒的 Zsh 插件,但:

特性 zsh-you-should-use vangie/you-should-use
Shell 支持 仅 Zsh Zsh + Bash + Fish + Nushell
别名提醒
现代工具建议 ✓(13+ 内置映射)
AI 建议 ✓(Ollama / OpenAI)
安装提示 ✓(自动检测包管理器)
主题系统 ✓(7 款主题)
别名发现 ✓(历史分析)
诊断工具 ✓(ysu doctor)
频率控制 部分 ✓(概率 + 冷却)

快速体验

30 秒安装体验:

bash 复制代码
# 1. 安装
curl -fsSL https://raw.githubusercontent.com/vangie/you-should-use/main/install.sh | sh

# 2. 重新加载 Shell
exec $SHELL

# 3. 试试看
cat README.md          # 如果你装了 bat,会提醒你
git status             # 如果你有 gs alias,会提醒你
ysu discover           # 看看你应该创建哪些 alias
ysu status             # 查看插件状态

写在最后

命令行效率的提升往往来自一些小习惯的积累:用一个短 alias 代替长命令、用一个更快的现代工具代替老旧工具。you-should-use 做的就是帮你在日常使用中自然而然地养成这些好习惯,而不需要你刻意去记忆。

如果你觉得这个项目有用,欢迎:

  • GitHub 上给个 Star
  • 提 Issue 或 PR
  • 分享给你的命令行爱好者朋友

GitHub:github.com/vangie/you-... 项目主页:ysu.codelife.me

相关推荐
哈里谢顿3 天前
服务器操作卡顿问题解决
shell
雪碧聊技术5 天前
如何查看、登录服务器上的redis服务?Redis 运维速查:从连接认证到数据查询的全链路解析
linux·服务器·命令行·缓存数据库
SunnyRivers6 天前
快速理解vLLM命令行工具serve
命令行·serve·vllm
集成显卡7 天前
别局限于 Oh-My-Posh,试试 Rust 编写的 starship:极简超快且无限可定制的命令行提示符
程序员·代码规范·命令行
狂龙骄子8 天前
CentOS查看压缩包文件列表
shell·rar·7-zip·cygwin·7z·压缩包文件列表·查看压缩包
夏同学Xavi11 天前
skls-mgr:统一管理 Agent Skills 的 CLI 工具
人工智能·程序员·命令行
波特率11520014 天前
bash命令进阶学习(Shell 元字符)
linux·bash·shell
阿常呓语15 天前
Linux命令 jq详解
linux·运维·shell·jq
buhuimaren_15 天前
Shell循环语句
shell