概要
- Oh My Zsh は便利だが、起動時の 遅延 や 不要な機能 が多い
- シンプルな Zsh設定 で十分な機能と高速な起動を実現可能
- starship でプロンプトを簡単かつ高速にカスタマイズ
- 履歴検索は fzf によるインタラクティブ検索が効率的
- Vimモード や tmux 活用でターミナル作業効率化
Oh My Zshの問題点とシンプル構成の提案
- Oh My Zsh(OMZ) は多機能だが、 シェルスクリプト の読み込みで起動が遅くなる問題
- プラグイン(git, zsh-autosuggestions, zsh-autocomplete)を入れたデフォルト構成で 0.38秒 の起動時間
- gitリポジトリ内や仮想環境プラグイン利用時、さらに遅延発生
- 頻繁なタブ・セッションの切替がある場合、 体感で1秒近い遅延
- 自動アップデート も起動時に数秒かかることがあり、頻繁な更新の必要性も低い
- 結論: 必要最小限 の設定から始め、必要な機能だけを追加推奨
最小限のZsh設定例
- HISTSIZE と SAVEHIST で履歴保存数を大幅増加
- EXTENDED_HISTORY で履歴にタイムスタンプ付与
- autocd でcdコマンド省略移動
- compinit で補完機能初期化
export HISTSIZE=1000000000
export SAVEHIST=$HISTSIZE
setopt EXTENDED_HISTORY
setopt autocd
autoload -U compinit; compinit
プロンプトカスタマイズとstarship活用
- プロンプトは starship 推奨、 単一バイナリ で高速動作
- gitやPython, Rustなどの言語・仮想環境情報も自動表示
- クラウドサービス表示(aws, gcloud, azure等)は 無効化 で視認性向上
[aws]
disabled = true
[package]
disabled = true
[gcloud]
disabled = true
[azure]
disabled = true
[nodejs]
disabled = true
[character]
success_symbol = '[➜](bold green)'
[cmd_duration]
min_time = 500
format = 'underwent [$duration](bold yellow)'
[directory]
truncation_length = 255
truncate_to_repo = false
use_logical_path = false
- starship有効化:
.zshrcに以下を追加
eval "$(starship init zsh)"
履歴検索の効率化
- zsh-autosuggestions は入力時に全候補が表示され、視覚的に煩雑
- fzf をCtrl+Rでバインドし、インタラクティブなファジー検索を利用推奨
source <(fzf --zsh)
起動時間比較
- シンプル設定後の起動時間: 0.07秒
- 大幅な高速化を実現
その他のTips・Vimモード
- Vimユーザー はZshでVimモードを有効化推奨
set -o vi
bindkey -v '^?' backward-delete-char
- デフォルトはEmacsキーバインドだが、Vim操作で編集効率化
tmux・ターミナルワークフロー
- tmux や helix などターミナルベースエディタを活用
- lazygitやyazi file manager等を ポップアップ表示 で効率的に管理
- コード・テスト出力を 一時的な分割表示 で同時確認
- 多数のタブや分割ウィンドウを IDEのウィンドウのように利用
まとめ
- OMZ不要論 :シンプル構成で十分な機能・高速動作
- 必要なプラグインのみ 手動ロード で柔軟運用
- ターミナルワークフローの最適化は 設定の見直し から
- 質問等はフッター記載の メールアドレス まで