更新于

Fish Shell 终极配置指南


Fish Shell 终极配置指南:从安装到全栈开发环境

Fish (Friendly Interactive Shell) 是一个极其注重开箱即用体验的 shell。本指南将带你从零开始,配置一个集成主流开发工具的高效环境。

1. 安装 Fish Shell

操作系统安装命令

  • macOS:
brew install fish
  • Ubuntu / Debian:
sudo apt update
sudo apt install fish

设置为默认 Shell

安装完成后,建议将 Fish 设置为默认 shell:

  1. 查看 fish 路径:
which fish
  1. 将 fish 添加到可信 shell 列表:
echo (which fish) | sudo tee -a /etc/shells
  1. 修改默认 shell:
chsh -s (which fish)

2. 安装插件管理器:Fisher

Fisher 是 Fish 最受欢迎的插件管理器,特点是轻量且快速。

curl -sL https://raw.githubusercontent.com/jorgebucaran/fisher/main/functions/fisher.fish | source && fisher install jorgebucaran/fisher

3. 安装核心插件 (fzf & z)

fzf (模糊搜索)

首先确保系统中已安装 fzf 二进制文件:

  • macOS: brew install fzf
  • Ubuntu: sudo apt install fzf

然后安装 Fish 插件以获得更好的集成:

fisher install PatrickF1/fzf.fish

功能:使用 Ctrl+R 搜索历史,Ctrl+Alt+F 搜索文件。

z (目录跳转)

z 可以让你根据访问频率快速跳转目录。

fisher install jethrokuan/z

用法z your_dir_name 即可快速直达。


4. 开发语言与工具安装

Fish 的环境变量配置与 Bash 不同,通常建议使用 fish_add_path 命令。

Rust

使用官方脚本安装:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

使用官方脚本安装后,Cargo 默认生成的 env.fish 脚本在某些 IDE 环境下可能无法被正确识别。

推荐配置方式:

不要依赖 source ~/.cargo/env.fish,而是直接使用 Fish 内置的路径管理命令:

# 推荐:在终端执行一次即可永久生效(全局变量)
set -Ux fish_user_paths $HOME/.cargo/bin $fish_user_paths

或者在 ~/.config/fish/config.fish 中添加:

# 确保路径存在再添加,避免报错
if test -d $HOME/.cargo/bin
    fish_add_path $HOME/.cargo/bin
end

Go

安装 Go 后(假设安装在 /usr/local/go),配置路径:

set -gx GOPATH $HOME/go
fish_add_path /usr/local/go/bin $GOPATH/bin

uv (Python 管理器)

Astral 出品的极速 Python 包管理工具:

curl -LsSf https://astral.sh/uv/install.sh | sh

uv 通常会自动尝试配置 Fish 路径,如果没有,请手动添加:

fish_add_path $HOME/.local/bin

fnm (Node.js 版本管理)

比 nvm 快得多的 Node 管理器:

curl -fsSL https://fnm.vercel.app/install | bash

config.fish 中添加初始化命令:

fnm env --use-on-cd | source

Bun (JavaScript Runtime)

curl -fsSL https://bun.sh/install | bash

配置路径:

set -gx BUN_INSTALL "$HOME/.bun"
fish_add_path $BUN_INSTALL/bin

5. 完整的 config.fish 示例

你的配置文件通常位于 ~/.config/fish/config.fish。以下是一个整合了上述工具的配置模板:

if status is-interactive
    # 保持默认的问候语为空
    set -g fish_greeting ""

    # --- 环境变量与路径 ---
    # Rust
    fish_add_path $HOME/.cargo/bin

    # Go
    set -gx GOPATH $HOME/go
    fish_add_path /usr/local/go/bin $GOPATH/bin

    # Bun
    set -gx BUN_INSTALL "$HOME/.bun"
    fish_add_path $BUN_INSTALL/bin

    # Python (uv)
    fish_add_path $HOME/.local/bin

    # --- 工具初始化 ---
    # fnm (Node.js)
    fnm env --use-on-cd | source

    # --- 别名 (Aliases) ---
    alias ls='ls --color=auto'
    alias g='git'
    alias vim='nvim'
end

6. 进阶建议:Starship 提示符

为了让 Fish 看起来更现代,强烈建议安装 Starship

  1. 安装: curl -sS https://starship.rs/install.sh | sh
  2. 启用: 在 config.fish 末尾添加:
starship init fish | source

现在,重启你的终端,享受飞一般的开发体验吧!


7. 常见问题与 IDE 协作

解决 VS Code / rust-analyzer 路径识别问题 如果你在 VS Code 中遇到 rust-analyzer 报错(例如不认识新版本 Rust 的 edition = “2024”),通常是因为 VS Code 没能继承 Fish 的环境变量,转而调用了系统自带的旧版工具链。 解决方案: 在 VS Code 的 settings.json 中手动注入正确的 PATH

{
  "rust-analyzer.server.path": "~/.cargo/bin/rust-analyzer",
  "rust-analyzer.linkedProjects": ["path/to/your/project/Cargo.toml"]
}

彻底清理旧版干扰 如果系统中存在旧版 rust-analyzer(如通过 apt 安装的),可能会导致版本冲突。建议将其卸载:

sudo apt remove rust-analyzer