PS1 (Zsh) में फ़ंक्शन प्राप्त करें?


15

यह काम करता है bash( parse_git_branchएक परिभाषित कार्य है)

export PS1="\$(parse_git_branch)"

लेकिन मैं बराबर का पता नहीं लगा सकता zsh

नोट: अगर मैं करता हूँ

PROMPT="$(parse_git_branch)"

यह काम करने लगता है, लेकिन वास्तव में यह कमांड चला रहा है जब मैं प्रॉम्प्ट सेट करता हूं, जो कि बिंदु नहीं है।

जवाबों:


26

आपको शामिल करना होगा

setopt PROMPT_SUBST

अपने में .zshrc, man zshallयह PROMPT विस्तार अनुभाग में बताते हैं :

यदि PROMPT_SUBST विकल्प सेट किया गया है, तो प्रॉम्प्ट स्ट्रिंग को पहले पैरामीटर विस्तार, कमांड प्रतिस्थापन और अंकगणितीय विस्तार के अधीन किया जाता है।


14

वास्तव में आपकी समस्या सिर्फ सेटिंग की नहीं थी PROMPT_SUBST: जब आप PROMPTचर सेट करते हैं तो आप फ़ंक्शन के मूल्यांकन के लिए अपनी स्क्रिप्ट में दोहरे उद्धरण चिह्नों का उपयोग करते हैं। आप केवल मूल्यांकन चाहते हैं जब संकेत की गणना की जाती है कि आप एकल उद्धरण का उपयोग करें।


5

जैसा कि अकीरा कहती हैं, आपको प्रॉम्प्ट विकल्प का उपयोग करना होगा। यह मेरा प्रारंभिक कोड है (अभी भी इस पर काम कर रहा है):

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) %(!.#.$)'
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.