什么是 ble.sh?
ble.sh,即 Bash Line Editor,是一个用纯 Bash 编写的命令行编辑器,在交互式 Bash 会话中取代 GNU Readline。你保留 Bash、你的 ~/.bashrc、别名和脚本,同时获得通常只有换 shell 才有的功能:输入时的语法高亮、类似 fish 的历史自动建议、与 emacs 键位并存的完整 vim 模式、带菜单和说明的补全、缩写,以及与 bash-completion 和 fzf 的集成。作者是 Koichi Murase,以 BSD-3-Clause 许可证发布。它没有需要运行的二进制程序:软件包把脚本安装到 /usr/share/blesh/ble.sh,在 ~/.bashrc 中加两行即可启用。
apt upgrade 送到你手上。
⚡ ble.sh 的主要功能
🎨 语法高亮
命令、关键字、字符串、变量、重定向和文件名在输入时即被着色,未知命令或语法错误在按下回车之前就能看出来。
💡 自动建议
类似 fish 的建议来自历史记录和补全,以灰色显示在光标之后。用右方向键或 C-f 接受整条建议,或用 M-f 逐词接受。
⌨️ vim 与 emacs 模式
默认使用 emacs 键位,执行 set -o vi 即可获得完整的 vi/vim 模式:普通、插入和可视模式,文本对象、寄存器,以及可选的 vim-airline 风格状态栏。
📋 菜单补全
按 Tab 打开候选菜单,可用方向键移动,有说明时显示说明,并支持模糊匹配。
✂️ 缩写
ble-sabbrev 定义在输入时展开的缩写,类似 fish 的缩写或 zsh 的全局别名,例如把 L 展开为 | less。
🐚 纯 Bash,无二进制
无需编译,也不依赖架构:ble.sh 是一个 Bash 脚本,只要有 Bash 3.0 或更新版本就能运行,并且不会干扰非交互式 shell 和脚本。
apt upgrade 就能让你保持最新。
📦 从 deb.griffo.io 安装
第 1 步:添加仓库
sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | sudo gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(lsb_release -sc 2>/dev/null) main" | sudo tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
sudo apt updateinstall -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(lsb_release -sc 2>/dev/null) main" | tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
apt update🆓 有一个永久免费的镜像。 deb-free.griffo.io 永久免费提供软件包 — 无需账号、无需订阅,最多落后上游 2 个月,安全修复立即发布。目前收录 cliamp、Ghostty、lazydocker、Oh My Posh、Uncloud 和 Zed;ble.sh 不在其中,因此今天只能通过上面的仓库安装 — 提出请求即可将其加入。
第 2 步:安装 ble.sh
# 安装最新版 ble.sh
sudo apt install ble.sh
# 可选:用于 vi 模式状态栏的 vim-airline 主题
sudo apt install ble.sh-airline-themes# 安装最新版 ble.sh
apt install ble.sh
# 可选:用于 vi 模式状态栏的 vim-airline 主题
apt install ble.sh-airline-themes第 3 步:在 ~/.bashrc 中启用 ble.sh
# ble.sh 没有要运行的命令:由 Bash 从 ~/.bashrc 加载。
# 把这一行放在 ~/.bashrc 的开头附近:
[[ $- == *i* ]] && source /usr/share/blesh/ble.sh --noattach
# ...~/.bashrc 其余内容保持不变...
# 再把这一行放在 ~/.bashrc 的最末尾:
[[ ${BLE_VERSION-} ]] && ble-attach
# 打开一个新终端,然后:
# 验证安装
echo $BLE_VERSION🎯 基本用法示例
日常使用:
# 检查当前 shell 中 ble.sh 是否已启用
echo $BLE_VERSION
# 修改设置后重新加载 ble.sh
ble-reload
# 更新通过 apt 获取;ble-update 也会引导你使用 apt
sudo apt update && sudo apt upgrade# 检查当前 shell 中 ble.sh 是否已启用
echo $BLE_VERSION
# 修改设置后重新加载 ble.sh
ble-reload
# 更新通过 apt 获取;ble-update 也会引导你使用 apt
apt update && apt upgrade~/.blerc 中的设置:
# ble.sh 从 ~/.blerc(或 ~/.config/blesh/init.sh)读取设置
# 使用 vim 键位而不是 emacs
set -o vi
# 停顿 300 毫秒后再显示自动建议
bleopt complete_auto_delay=300
# 完全关闭自动建议
bleopt complete_auto_complete=
# 修改建议文字的颜色
ble-face auto_complete='fg=242'缩写、按键绑定与集成:
# 输入时把 "L" 展开为 "| less"
ble-sabbrev L='| less'
# 让 Ctrl+C 丢弃当前行
ble-bind -f 'C-c' discard-line
# 适配 ble.sh 的 fzf 补全与按键绑定
ble-import -d integration/fzf-completion
ble-import -d integration/fzf-key-bindings
# vim-airline 风格状态栏(需要 ble.sh-airline-themes)
ble-import vim-airline
bleopt vim_airline_theme=dark🔧 工具集成
ble.sh 位于你现有的 Bash 配置之下,而不是取而代之:
- bash-completion:
bash-completion软件包提供的补全会被自动识别并显示在菜单中 - fzf:
ble-import加载适配 ble.sh 的 fzf 补全和按键绑定 - Atuin:Atuin 的 Bash 集成支持 ble.sh,借此获得可靠的 preexec 钩子来记录历史
- Starship / Oh My Posh:它们生成的提示符照常工作,无需改动
- 配置文件:
~/.blerc保存你的bleopt、ble-face和ble-bind设置,与~/.bashrc分开
🚀 为什么选择 deb.griffo.io?
- 官方 Ubuntu:从 25.10 起在 universe 中提供,但只是在每个版本生命周期内冻结的快照;22.04 和 24.04 没有
- git clone + make:版本最新,但需要手动构建并安装到
~/.local,还得自己用ble-update保持更新 - deb.griffo.io:最新版本,并自动更新
- ✅ 最新快照:上游的 nightly 快照,包含针对新版 Bash 和终端的修复
- ✅ 无需手动配置:不用 git clone,不用
make,也不必在家目录里维护一份 ble.sh 副本 - ✅ 自动更新:上游发布后数小时内更新软件包
- ✅ 完整软件包:
/usr/share/blesh中完整的 ble.sh 文件、文档,以及可选的ble.sh-airline-themes软件包 - ✅ 所有架构:以
Architecture: all发布,amd64、arm64、armhf、riscv64 等安装的是同一个包 - ✅ 多发行版:支持 Ubuntu 22.04、24.04、25.10 和 26.04
- ✅ 易于维护:使用标准 apt 命令即可更新
📦 软件包构建仓库
Ubuntu 软件包在这个 GitHub 仓库中自动构建和维护:
- 🖍️ ble.sh-debian - 最新版本构建
🔗 相关软件包
deb.griffo.io 同样提供:
- fzf - 与 ble.sh 集成的模糊查找器
- Atuin - 把 shell 历史存入数据库,支持 ble.sh
- Starship - 在 ble.sh 下同样可用的跨 shell 提示符
- zoxide - 能记住常用目录的更聪明的 cd
~/.bashrc 也不想为另一个 shell 重写配置的所有人。