結果

結果

私はそれを使用していますオメジッシュ。違いをロードしようとしています。トピック現在のディレクトリパス基準(pwd

ロジック

もしパスワード/Sites/work/sustring loadにあるかそれを含めaf-magic、それ以外の場合はloadを含めますrobbyrussell

.zshrc

頑張った

STR=$(pwd)
SUB='/Users/john/Sites/work'

if [[ "$STR" =~ .*"$SUB".* ]]; then
  echo "It's there."
  ZSH_THEME="af-magic"
else
    ZSH_THEME="robbyrussell"
fi

結果

読み込み中です。robbyrussell

前任者。

ここに画像の説明を入力してください。

ベストアンサー1

見たらああ、私のzshコードZSH_THEME、oh-my-zsh初期化コードは、この変数を使用して各テーマのファイルを取得します。

したがって、現在の作業ディレクトリがディレクトリに入るたびにテーマが変更されるようにするには、次の手順を実行する必要があります。

  1. 現在のディレクトリが変更されるたびにこの変数を変更してください。
  2. 変数が変更されると、同じテーマファイルソースを再現します。

だからこんな感じ:

load-omz-theme() {
  # copied and improved from oh-my-zsh
  if (( $# > 0 )) ZSH_THEME=$1
  if [[ -n $ZSH_THEME ]]; then
    if [[ -f $ZSH_CUSTOM/$ZSH_THEME.zsh-theme ]]; then
      source "$ZSH_CUSTOM/$ZSH_THEME.zsh-theme"
    elif [[ -f $ZSH_CUSTOM/themes/$ZSH_THEME.zsh-theme ]]; then
      source "$ZSH_CUSTOM/themes/$ZSH_THEME.zsh-theme"
    else
      source "$ZSH/themes/$ZSH_THEME.zsh-theme"
    fi
  fi
}
adapt-theme() {
  local previous_theme=$ZSH_THEME
  case $PWD in
    ($SUB*) ZSH_THEME=af-magic;;
    (*)     ZSH_THEME=robbyrussell;;
  esac
  [[ $ZSH_THEME = $previous_theme ]] || load-omz-theme
}

chpwd_functions+=(adapt-theme)

ちなみに、[[ "$STR" =~ .*"$SUB".* ]]それはzsh構文ではなくbash構文です。では、zsh正規表現内の変数を参照しても、その中の正規表現演算子は無効になりません。

おすすめ記事