多くの
この
なぜ zsh ではなく fish なのか
設定なしで「使える」シェル
zsh を.zshrc をzsh-syntax-highlighting やzsh-autosuggestions を
fish は
- シンタックスハイライト: コマンドが
正しければ青、 存在しない コマンドは 赤で 表示される - オートサジェスション: 入力中に
ヒストリーや 補完候補が 灰色で 表示され、 →キーで確定できる - タブ補完: コマンドの
フラグや サブコマンドに 対して、 説明文付きの 補完候補が 表示される
zsh では
エラーメッセージがわかりやすい
zsh で
例えば、
Web ベースの設定画面
fish_config コマンドを
fish_config
ターミナルの
POSIX 非準拠は実はメリット
「fish は#!/bin/bash や#!/bin/sh を
むしろ POSIX の&& のand、|| のor と&& と|| も-g(グローバル)、-l(ローカル)、-x(エクスポート)と
fish 4.0: Rust への書き換え
2024 年末に
- パフォーマンスの
向上 : 起動時間やコマンド実行の レスポンスが 改善されました。 特に 大量の ヒストリーを 持つ環境での 検索が 高速に なっています - メモリ安全性: Rust の
メモリ安全性の 恩恵に より、 セグメンテーションフォルトや メモリリークの リスクが 大幅に 低減しました - 今後の
開発の : Rust エコシステムの加速 充実した ツールチェーン (Cargo、 clippy、 テストフレームワーク)に より、 コントリビューションの 敷居が 下がり、 開発速度の 向上が 期待されます
ユーザー側で
Fisher: fish のプラグインマネージャー
fish のfish_plugins と
# Fisher のインストール
curl -sL https://raw.githubusercontent.com/jorgebucaran/fisher/main/functions/fisher.fish | source && fisher install jorgebucaran/fisher
おすすめプラグイン
自分が
jethrokuan/fzf
fish 上で
Ctrl+R: コマンドヒストリーのファジー検索 Ctrl+O: ファイルのファジー検索 Ctrl+Alt+F: fzf でファイルを 検索して コマンドラインに 挿入
zsh で.zshrc に
fisher install jethrokuan/fzf
jethrokuan/z
よくz port とcd した/Users/mzk/Works/src/github.com/msageha/portfolio に
zsh のz コマンドと
fisher install jethrokuan/z
0rax/fish-bd
現在いる
例えば、/Users/mzk/Works/src/github.com/msageha/portfolio/content/blog にbd Works と/Users/mzk/Works にcd ../../../../../../ のような
fisher install 0rax/fish-bd
decors/fish-ghq
ghq でCtrl+G でcd します。
Git リポジトリを
fisher install decors/fish-ghq
dracula/fish
Dracula カラーテーマを
fisher install dracula/fish
oh-my-fish/plugin-peco
peco を
fisher install oh-my-fish/plugin-peco
fish_plugins ファイルで一括管理
Fisher の~/.config/fish/fish_plugins にfisher update を
jorgebucaran/fisher
jethrokuan/z
0rax/fish-bd
oh-my-fish/plugin-peco
jethrokuan/fzf
decors/fish-ghq
dracula/fish
補完の設定
fish の
組み込みの補完
fish は、fish_update_completions と
fish_update_completions
CLI ツールごとの補完生成
また、~/.config/fish/completions/ に
# 各ツールの補完を生成
docker completion fish > ~/.config/fish/completions/docker.fish
gh completion -s fish > ~/.config/fish/completions/gh.fish
kubectl completion fish > ~/.config/fish/completions/kubectl.fish
uv generate-shell-completion fish > ~/.config/fish/completions/uv.fish
補完の動作
fish のgit commit -- とTab を--amend、--message などの
zsh でもzsh-completions の.zshrc への
まとめ
fish shell は
- zsh からの
移行理由 : シンタックスハイライト・オートサジェスション・補完がすべて デフォルトで 動く - fish 4.0: Rust 化により
パフォーマンスと 安定性が 向上 - Fisher + プラグイン: fzf、
z、 ghq 連携など、 少数の 厳選プラグインで 十分快適 - 補完: 組み込み補完 + CLI ツールの
補完生成で、 ほぼすべての コマンドに 補完が 効く
zsh で.zshrc を