Nhận chức năng vào PS1 (Zsh)?


15

Điều này hoạt động trong bash( parse_git_branchlà một chức năng được xác định)

export PS1="\$(parse_git_branch)"

Nhưng tôi không thể tìm ra tương đương trong zsh.

Lưu ý: Nếu tôi làm

PROMPT="$(parse_git_branch)"

Nó có vẻ hoạt động, nhưng thực tế nó đang chạy lệnh khi tôi đặt dấu nhắc, đây không phải là điểm chính.

Câu trả lời:


26

Bạn phải bao gồm

setopt PROMPT_SUBST

trong của bạn .zshrc, man zshallgiải thích nó trong phần MỞ RỘNG KHUYẾN MÃI :

Nếu tùy chọn PROMPT_SUBST được đặt, chuỗi dấu nhắc trước tiên phải chịu mở rộng tham số, thay thế lệnh và mở rộng số học.


14

Trên thực tế, vấn đề của bạn không chỉ là thiết lập PROMPT_SUBST: bạn sử dụng dấu ngoặc kép trong tập lệnh của mình để buộc đánh giá hàm khi bạn đặt PROMPTbiến. Bạn chỉ muốn đánh giá khi lời nhắc được tính toán là bạn phải sử dụng dấu ngoặc đơn.


5

Như akira nói, bạn phải sử dụng dấu nhắc. Đây là mã đầu tiên của tôi (vẫn đang làm việc với nó):

setopt PROMPT_SUBST
PROMPT='$(parse_git_branch)'

hoặc tốt hơn

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) %(!.#.$)'
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.