Dapatkan Fungsi Ke PS1 (Zsh)?


15

Ini berfungsi di bash( parse_git_branchadalah fungsi yang ditentukan)

export PS1="\$(parse_git_branch)"

Tetapi saya tidak dapat menemukan persamaannya di zsh.

Catatan: Jika saya melakukannya

PROMPT="$(parse_git_branch)"

Tampaknya berfungsi, tetapi sebenarnya itu menjalankan perintah ketika saya mengatur prompt, yang bukan itu intinya.

Jawaban:


26

Anda harus memasukkan

setopt PROMPT_SUBST

di Anda .zshrc, man zshalljelaskan di bagian PROMPT EXPANSION :

Jika opsi PROMPT_SUBST diatur, string prompt pertama-tama dikenai ekspansi parameter, substitusi perintah, dan ekspansi aritmatika.


14

Sebenarnya masalah Anda bukan hanya pengaturan PROMPT_SUBST: Anda menggunakan tanda kutip ganda dalam skrip Anda memaksa evaluasi fungsi ketika Anda mengatur PROMPTvariabel. Anda hanya ingin evaluasi ketika prompt dihitung yaitu Anda harus menggunakan tanda kutip tunggal.


5

Seperti kata akira, Anda harus menggunakan subtitle cepat. Ini adalah kode awal saya (masih mengerjakannya):

setopt PROMPT_SUBST
PROMPT='$(parse_git_branch)'

atau lebih baik

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) %(!.#.$)'
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.