Tôi vừa quyết định thử zsh (thông qua oh-my-zsh), và hiện đang chơi với precmd
để mô phỏng một dấu nhắc hai dòng có lời nhắc đúng trong nhiều hơn chỉ dòng cuối cùng.
Vì vậy, tôi đã sao chép chủ đề mặc định và lấy cảm hứng từ bài đăng này (rằng tôi cũng đang sử dụng để học hỏi rất nhiều), tôi thực hiện một số cách như thế này (tôi sẽ thêm màu sau):
function precmd {
local cwd="${(%):-[%~]}"
local who_where="${(%):-%n@%m}"
local git_info=${(%)$(git_prompt_info)}
local right_prompt=" $git_info [$who_where]"
local left_prompt="${(r:(($COLUMNS - ${#${right_prompt}})):: :)cwd}"
echo "$left_prompt$right_prompt"
}
Và nó hoạt động. Nhưng tôi không thể không tự hỏi: zsh có xác định tất cả các biến đó mỗi khi tiền tố được gọi không?
Tôi đã googling cho các bao đóng, phạm vi và không gian tên liên quan đến zsh, tìm cách gắn các vars cục bộ dưới dạng dữ liệu vào premd, vì vậy nó không cần xác định lại các biến mỗi lần, nhưng tôi không tìm thấy gì. Có cách nào để làm những gì tôi đang cố gắng không, hay tôi nên bỏ nó đi?
Là một lưu ý phụ, và chỉ khi nó có liên quan, "để có chức năng được tải" nghĩa là gì?