web-dev-qa-db-ja.com

zsh補完を選択的に無効にできますか?

zshでpreztoを使用していますが、新しいシェルを起動するのに少し時間がかかります。 (注:構成を他の低速のシステムに移動する前に、高速なシステムで最適化しようとしています。)

time zsh -i -c exitによるベンチマーク:

  • 0.046:bash
  • 0.080:zshpreztoなし。
  • 0.092:zsh preztoを使用しますが、モジュールはロードされません。
  • 0.138:zsh、prezto、およびcompletionを除くすべての「デフォルト」モジュールがロードされています。
  • 0.308:zsh、prezto、およびすべての「デフォルト」モジュールがロードされています。

まず、zshの読み込みはbashより74%遅くなります。さらに73%の速度低下(preztoと完了を除くすべてのモジュールがロードされている場合)を受け入れることはできますが、285%の速度低下(すべてのモジュールを含む)は少し大きすぎます。

これらの補完のいくつかは便利なので、これらのいくつかを選択的に無効にする方法はありますか?これについての言及を聞いたことがあります 他の場所 、ただし、これがタブ補完速度を向上させるためだけなのか、シェルの読み込みを向上させるためだけなのかはわかりません。 (完了を選択的に無効にできる場合、これにより、速度低下の原因をプロファイリングして解明することができます。)

1
Sparhawk

Preztoが/usr/lib/prezto/modules/completionからモジュールをロードしているようです。すべてを有効にして、/usr/lib/prezto/modules/completion/init.zshの内容を削除しました。これにより、読み込み時間が2番目に速くなりました。次に、このファイルの行を体系的に削除し始め、1行を分離して速度を低下させることができました。

unsetopt CASE_GLOB

N.B.私の特定のケースでは、速度低下は私の~/.zshrcの重複したcompinitが原因でした。おそらく、preztoもケースをオフにしてcompinitを実行していたため、ロード時間が2倍に増加しました。

2
Sparhawk