日本語版
最新ニュース
科学&テクノロジー

Oh My Zshはおそらく必要ありません

Oh My Zshは今でもたくさん勧められています。 Oh My Zsh の主な問題は、シェルの起動時間に影響を与える不必要な肥大化が大量に追加されることです。 OMZ はシェル スクリプトで記述されているため、新しいターミナル タブを開くたびに、それらのスクリプトをすべて解釈する必要があります。おそらく、OMZ はまったく必要ありません。 いくつかのプラグインを使用したデフォルト設定のタイミングは次のとおりです。 ➜ ~ /usr/bin/time -f "%e seconds" zsh -i -c exit 0.38 seconds これはプロンプトと新しいシェル インスタンスのみに適用されます。新しいタブの作成には、端末でも時間がかかります。私にとってそれはまるまる1秒のように感じます。 私のワークフローでは、1 日に最大数百ものターミナルまたは tmux タブを開いたり閉じたりする必要があります。ターミナルからすべてを行います。テキスト エディタで新しいタブを開くのに毎回 0.5 秒かかると想像してみてください。 場合によっては更新のチェックも行われますが、新しいタブを開いたときにこれに数秒かかる場合があります。 シェル設定を頻繁に更新する理由はありません。特に、多くのサードパーティのプラグインも更新される場合はそうです。なぜシェルで更新を取得する必要があるのでしょうか? 私のアドバイスは、シンプルに始めて、本当に必要なものだけを追加することです。 最小限の…

Oh My Zshはおそらく必要ありません

1768025356
2026-01-10 04:35:00

Oh My Zshは今でもたくさん勧められています。 Oh My Zsh の主な問題は、シェルの起動時間に影響を与える不必要な肥大化が大量に追加されることです。

OMZ はシェル スクリプトで記述されているため、新しいターミナル タブを開くたびに、それらのスクリプトをすべて解釈する必要があります。おそらく、OMZ はまったく必要ありません。

いくつかのプラグインを使用したデフォルト設定のタイミングは次のとおりです。

  ~ /usr/bin/time -f "%e seconds" zsh -i -c exit
0.38 seconds

これはプロンプトと新しいシェル インスタンスのみに適用されます。新しいタブの作成には、端末でも時間がかかります。私にとってそれはまるまる1秒のように感じます。

私のワークフローでは、1 日に最大数百ものターミナルまたは tmux タブを開いたり閉じたりする必要があります。ターミナルからすべてを行います。テキスト エディタで新しいタブを開くのに毎回 0.5 秒かかると想像してみてください。

場合によっては更新のチェックも行われますが、新しいタブを開いたときにこれに数秒かかる場合があります。

シェル設定を頻繁に更新する理由はありません。特に、多くのサードパーティのプラグインも更新される場合はそうです。なぜシェルで更新を取得する必要があるのでしょうか?

私のアドバイスは、シンプルに始めて、本当に必要なものだけを追加することです。

最小限の Zsh 構成

出発点として適切に機能する最小限の Zsh 構成は次のとおりです。

export HISTSIZE=1000000000
export SAVEHIST=$HISTSIZE
setopt EXTENDED_HISTORY
setopt autocd
autoload -U compinit; compinit

すでにかなり完成度の高いセットアップになっています!

この構成に関する詳細は次のとおりです。

  • HISTSIZE そして SAVEHIST 履歴のサイズを設定します。
  • EXTENDED_HISTORY 履歴エントリにタイムスタンプを追加します。
  • autocd 入力せずにディレクトリを変更できます cd
  • compinit Zsh 補完システムを初期化します。

迅速なカスタマイズ

プロンプトもカスタマイズしたいと考えています。プロンプトには、私は使用しています 宇宙船 これは、単一のバイナリに詰め込まれた高速かつ最小限のプロンプトです。

Oh My Zsh でこれを行う非常に古い方法は、プラグインとカスタム テーマを使用することでした。 Starship を使用すると、それが非常にシンプルで簡単になりました。 git、仮想環境、および言語固有のプラグインを置き換えます。

Starshipの私の設定は次のとおりです。

[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

クラウド サービスは世界中で利用できるため、無効にしました。視覚的なノイズが増えるため、すべてのプロンプトにこれらを表示することは望ましくありません。

現在のプロンプトは次のようになります。

このプロジェクトでは Python と Rust の両方を使用しており、プロンプトでそれらが強調表示されています。コマンドを実行すると、実行にかかった時間も表示されます。

有効にするには、次の行を .zshrc:

eval "$(starship init zsh)"

履歴検索

たくさんの人が使っています zsh-autosuggestions 履歴検索用プラグイン。入力するとすべての候補が表示されるため、気が散ってしまいます。

代わりに、私は使用することを好みます fzf にバインドされている Ctrl+R 履歴を検索するため。インタラクティブなあいまい検索を提供します。

これを有効にするには、次の行を .zshrc:

最終起動時間

これらの変更後、起動は次のようになります。

 /usr/bin/time -f "%e seconds" zsh -i -c exit
0.07 seconds

その他のヒント

Vim ユーザーには、Zsh で Vim モードを有効にすることもお勧めします。コマンドの編集が大幅に高速化されます。

set -o vi
# Fix for backspace in vi mode
bindkey -v '^?' backward-delete-char

Vim と同じように機能します。デフォルトでは、 zle (シェル入力を読み取るライブラリ) は Emacs キーバインドを使用します。

結論

1 年前に OMZ から切り替えた後、新しいワークフローに慣れるまでに数日しかかかりませんでした。まだ一部のプラグインが不足している場合は、いつでも手動でロードできます。

#Zshはおそらく必要ありません

執筆者について: nipponese

Nipponese News編集部は、国内外のニュースを日本語で分かりやすくお届けします。