Como posso fazer com que os comandos apareçam em negrito em zsh?

17

Eu configurei meu shell bash para que quaisquer comandos digitados apareçam em negrito e a saída dos comandos seja mostrada em peso normal:

Eufizissoadicionando\e[01mnofinaldaminhavariávelPS1paraativaronegritoeusartrapDEBUGparadesativá-la:

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

Dessa forma, o \e[0m é impresso antes de cada comando ser executado e recebo o peso normal da fonte na saída.

Como eu poderia conseguir o mesmo efeito em zsh ?

    
por terdon 31.10.2015 / 00:50

2 respostas

11

A maneira antiga era usar POSTEDIT

 POSTEDIT=$'\e[0m'

(e, a propósito, isso não é bash, não use uma armadilha DEBUG para simular preexec : zsh é onde é de ) mas desde o zsh 4.3.11 você pode usar a linha de comando recurso de destaque de sintaxe . Deixe o seu alerta apenas sobre o seu prompt e defina

zle_highlight=(default:bold)
    
por 01.11.2015 / 01:36
6

O que você quer é função de gancho preexec :

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

Então, antes que cada comando seja executado, preexec será executado para redefinir sua fonte para normal.

Assim, para obter o mesmo prompt mostrado na sua pergunta, adicione essas linhas ao seu ~/.zshrc :

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