¿Cómo puedo hacer que los comandos aparezcan en negrita en zsh?

18

He configurado mi shell bash para que cualquier comando que escriba aparezca en negrita y la salida de los comandos se muestre en peso normal:

ingrese la descripción de la imagen aquí

Hice esto agregando \e[01mal final de mi PS1variable para activar negrita, y usando trap DEBUGpara desactivarlo:

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

De esa manera, \e[0mse imprime antes de que se ejecute cada comando y obtengo el peso normal de la fuente en la salida.

¿Cómo haría para obtener el mismo efecto zsh?

terdon
fuente

Respuestas:

13

La forma antigua era usar POSTEDIT

 POSTEDIT=$'\e[0m'

(y, por cierto, esto no es bash, no use una trampa DEBUG para simular preexec: zsh es de dónde es ) pero desde zsh 4.3.11 puede usar la función de resaltado de sintaxis de línea de comando . Deje que su aviso se preocupe solo por su aviso y establezca

zle_highlight=(default:bold)
Gilles 'SO- deja de ser malvado'
fuente
7

Lo que quieres es la función de enlace preexec :

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

Luego, antes de ejecutar cada comando, preexecse ejecutará para restablecer su fuente a la normalidad.

Entonces, para obtener el mismo mensaje que muestra en su pregunta, agregue estas líneas a su ~/.zshrc:

autoload -U colors && colors
PS1="%{$fg_bold[yellow]%}%n@%m %{$fg[blue]%}%~ \$ %{$reset_color%}%{$fg_bold[white]%}"
preexec() { printf "\e[0m"; }
Cuonglm
fuente
Eso es lo correcto para usar en lugar de una trampa DEPURAR, pero tampoco es la forma correcta de poner en negrita la línea de comando.
Gilles 'SO- deja de ser malvado'