Bagaimana saya bisa membuat perintah tampak tebal di zsh?

18

Saya telah menyiapkan bash shell saya sehingga perintah apa pun yang saya ketik muncul dalam huruf tebal dan output perintah ditampilkan dalam bobot normal:

masukkan deskripsi gambar di sini

Saya melakukan ini dengan menambahkan \e[01mdi akhir PS1variabel saya untuk mengaktifkan huruf tebal, dan menggunakan trap DEBUGuntuk mematikannya:

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

Dengan cara itu, \e[0mdicetak sebelum setiap perintah dieksekusi dan saya mendapatkan bobot font normal dalam output.

Bagaimana saya mendapatkan efek yang sama zsh?

terdon
sumber

Jawaban:

13

Cara kuno adalah menggunakan POSTEDIT

 POSTEDIT=$'\e[0m'

(dan omong-omong ini bukan bash, jangan gunakan perangkap DEBUG untuk mensimulasikan preexec: zsh adalah dari mana asalnya ) tetapi karena zsh 4.3.11 Anda dapat menggunakan fasilitas penyorotan sintaks baris perintah . Biarkan layanan prompt Anda hanya tentang prompt Anda dan atur

zle_highlight=(default:bold)
Gilles 'SANGAT berhenti menjadi jahat'
sumber
7

Apa yang Anda inginkan adalah fungsi preexec hook :

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

Kemudian sebelum setiap perintah dieksekusi, preexecakan dijalankan untuk mereset font Anda menjadi normal.

Jadi, untuk mendapatkan prompt yang sama dengan yang Anda tunjukkan dalam pertanyaan Anda, tambahkan baris ini ke ~/.zshrc:

autoload -U colors && colors
PS1="%{$fg_bold[yellow]%}%n@%m %{$fg[blue]%}%~ \$ %{$reset_color%}%{$fg_bold[white]%}"
preexec() { printf "\e[0m"; }
cuonglm
sumber
Itu adalah hal yang tepat untuk digunakan daripada perangkap DEBUG, tetapi tidak ada cara yang benar untuk membuat baris perintah menjadi tebal.
Gilles 'SANGAT berhenti menjadi jahat'