从zsh飞到fish: 高效终端配置¶
原本笔者是坚定的zsh党, 但发现在6202年, zsh早已是“历史的尘埃”了
最直接的原因是:
之前zsh乱七八糟的配置, 导致了 vscode copilot Agent 不能"看见" CLI. [一个非常精彩的错误. 后面有时间会复盘整理一下, 单开一篇文章]
笔者试图花了5-6h进行修复, 最终只有一个暴力方式, 非常非常不美观.
由于“锅”完全来自zsh, 笔者索性直接全盘抛弃, 全面转向fish.
一方面是跟上时代潮流, 另一方面是自动解决了上述棘手问题!
本文聚焦:
- 如何在 MacOS (Apple Silicon) 安装 fish
- fish 的基础配置
- fish 的基础指令用法
fish 安装¶
| Bash | |
|---|---|
1 2 3 4 5 6 7 8 9 | |
激活和验证:
完全关闭并重新启动你的终端, 运行 echo $SHELL, 得到 /opt/homebrew/bin/fish.
刷新fish配置:
| Bash | |
|---|---|
1 2 | |
fish 基础配置¶
(1) 快速配置样式
| Bash | |
|---|---|
1 | |
这会在浏览器中打开一个配置页面, 我们可以在那里轻松选择主题、更改Prompt样式、查看函数

自定义好, 在 CLI 中输入 ctrl+c 关闭, 然后就行了. 立马生效!
(2) 让fish认识brew
我们要将 Homebrew 永久添加到配置文件, 这样每当开启一个终端窗口(fish), 就会自动认识brew了
注意, 要把 eval "$(/opt/homebrew/bin/brew shellenv)" 加在配置文件的最开头!
| Bash | |
|---|---|
1 2 3 4 5 | |
- 为什么要这么做?
- 因为当我们使用
brew install ...之后, 这些下载好的软件都在Homebrew目录(/opt/homebrew) - 但是fish并不知道它们在这里!
- 因此我们要在每次fish启动后, 告诉他, “homebrew目录在这里, 下载好的软件从这里调用”
- 因为当我们使用
- 验证:
brew --version. 应该得看见 brew 的版本号才对. - 刷新:
source ~/.config/fish/config.fish
(3) 推荐插件 zoxide|bat|gping
这是我的“懒人版” config.fish, 基于alias创建了一些“别名”用来简化:
| Bash | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
fish 常用指令¶
fish和传统bash的语法、使用命令有很多差异, 因此要注意:
| Bash | |
|---|---|
1 2 3 4 | |
fish相较于传统shell, 有很多显著优点:
- 语法高亮: 可以在
fish_config自定义 - 推荐命令并补全
tab: 推荐命令方向键右键: 整条命令补全
- 基于 Web 的配置, 自动保存:
fish_config - 自动识别切换目录: 内置用
zoxide代替cd - 交互式历史搜索:
ctrl+r打开Esc退出
oh-my-fish 安装配置¶
oh-my-fish, aka: omf
注意: omf可能会覆盖或修改我们现有的 ~/.config/fish/config.fish 文件
好在笔者刚刚起步, 也没配置啥玩意, 因此就上omf吧!
(1) 安装 OMF:
| Bash | |
|---|---|
1 | |
安装程序会自动运行
(2) 选择炫酷的"主题" 🤩:
看看自己喜欢哪一款, 等会安装
(3) 常用操作:
omf list: 查看omf已安装的插件和主题omf theme: 查看已安装主题
主题有关:
| Bash | |
|---|---|
1 2 3 4 | |
插件有关:
| Bash | |
|---|---|
1 2 3 | |