PS1(Zsh)に関数を取得しますか?


15

これは動作しますbashparse_git_branch定義された関数です)

export PS1="\$(parse_git_branch)"

しかし、で同等のものを理解することはできませんzsh

注:私がする場合

PROMPT="$(parse_git_branch)"

動作しているようですが、実際には、プロンプトを設定したときにコマンドが実行されています。これは重要ではありません。

回答:


26

あなたが含める必要があります

setopt PROMPT_SUBST

で、それをプロンプト拡張セクション.zshrcman zshall説明します。

PROMPT_SUBSTオプションが設定されている場合、プロンプト文字列は最初にパラメーター展開、コマンド置換、および算術展開の対象になります。


14

実際、問題は設定だけではありませんPROMPT_SUBST。スクリプトで二重引用符を使用して、PROMPT変数を設定するときに関数の評価を強制しています。評価が必要なのは、プロンプトが計算されたときのみです。つまり、単一引用符を使用する必要があります。


5

akiraが言うように、prompt substを使わなければなりません。これは私の初期のコードです(まだそれに取り組んでいます):

setopt PROMPT_SUBST
PROMPT='$(parse_git_branch)'

以上

setopt PROMPT_SUBST
PROMPT='[$PR_MAGENTA%n$PR_NO_COLOR@$PR_GREEN%U%m%u$PR_NO_COLOR:$PR_RED%2c$PR_NO_COLOR]$(parse_git_branch) %(!.#.$)'
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.