Làm thế nào tôi có thể làm cho các lệnh xuất hiện in đậm trong zsh?


18

Tôi đã thiết lập shell bash của mình để bất kỳ lệnh nào tôi nhập xuất hiện in đậm và đầu ra của lệnh được hiển thị ở trọng lượng bình thường:

nhập mô tả hình ảnh ở đây

Tôi đã làm điều này bằng cách thêm \e[01mvào cuối PS1biến của tôi để bật đậm và sử dụng trap DEBUGđể tắt nó:

trap 'printf "\e[0m" "$_"' DEBUG

Bằng cách đó, lệnh \e[0mđược in trước khi mỗi lệnh được thực thi và tôi có trọng lượng phông chữ bình thường trong đầu ra.

Làm thế nào tôi sẽ có được hiệu ứng tương tự trong zsh?

Câu trả lời:



7

Những gì bạn muốn là chức năng móc preexec :

preexec() { printf "\e[0m"; }

Sau đó, trước khi mỗi lệnh được thực thi, preexecsẽ được chạy để đặt lại phông chữ của bạn về bình thường.

Vì vậy, để nhận được cùng một dấu nhắc bạn hiển thị trong câu hỏi của mình, hãy thêm những dòng này vào ~/.zshrc:

autoload -U colors && colors
PS1="%{$fg_bold[yellow]%}%n@%m %{$fg[blue]%}%~ \$ %{$reset_color%}%{$fg_bold[white]%}"
preexec() { printf "\e[0m"; }

Đó là điều đúng đắn để sử dụng thay vì bẫy DEBUG, nhưng không phải là cách đúng để làm cho dòng lệnh được in đậm.
Gilles 'SO- ngừng trở nên xấu xa'
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.