在 Windows 上用惯了 clink 的高亮和自动补全,linux 服务器上用的普通 bash,有点难受。很喜欢 nushell,但不想换 shell 创造迁移成本。于是我开始了如下折腾:

1. ble.sh

第一反应是,装一个 oh-my-bash 之类的增强插件,类似 clink 的做法,遂找到了 ble.sh

git clone --recursive --depth 1 --shallow-submodules https://github.com/akinomyoga/ble.sh.git
make -C ble.sh install PREFIX=~/.local
echo 'source -- ~/.local/share/blesh/ble.sh' >> ~/.bashrc

使用体验:不卡,但是不跟手,延迟太高。操作太快偶尔会漏字。忍不了。

2. 关闭自动补全

尝试加延迟:bleopt complete_auto_delay=500

不管用。再关闭自动补全:bleopt complete_auto_complete=''

仍然不管用。遂放弃 ble.sh,寻找性能更好的代替品。

稳定的性能差,性能好的不稳定,性能好又稳定的配置麻烦。综合考虑下选择了 fish。

3. fish

sudo apt install fish
fish

fish

感觉打开了新世界,自带补全和高亮,一点都不卡。

开始替换,用 hermes 迁移了 bash

hermes

4. 更新

发现 fish 4 是用 Rust 重构的,而 apt 提供的最新版本是 3.x。解决方法:

sudo add-apt-repository ppa:fish-shell/beta-4
sudo apt update
sudo apt install fish

体感上没有什么显著的性能提升。

5. 个性化

用 fish 自带的 fish_config 打开网页配置,在 localhost,主机打不开。解决方法:

# 服务器
fish_config
# 主力机
ssh -L 8080:localhost:8000 用户名@服务器IP

一顿操作猛如虎,发现默认设置最合适……

于是什么都没改,直接退出。折腾结束。

总结

bash 已经够用了,但我还是换成了 fish。

bash 很稳定,性能够用。在接触 fish 之前,我尝试过 oh-my-bash、oh-my-zsh,最后还是选择了默认 bash,简单好用,懒得折腾。

nushell 的自然语言语法用起来很爽,但不兼容 bash,代价太大,不考虑迁移。

而 fish 正好卡在那个平衡点上,开箱即用,无需配置,又不改变你已有的工作流。唯一要做的就是把 .bashrc 里的自定义配置转移到 ~/.config/fish/config.fish。

这是我第一次用 fish,也是最后一次换 shell。