Oh My Zshが無駄を増やす
97日前原文(rushter.com)
概要
- 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不要論:シンプル構成で十分な機能・高速動作
- 必要なプラグインのみ手動ロードで柔軟運用
- ターミナルワークフローの最適化は設定の見直しから
- 質問等はフッター記載のメールアドレスまで