zsh-syntax-highlighting escribe la expansión de parámetros en negro

zsh-syntax-highlighting escribe la expansión de parámetros en negro

he instaladoresaltado de sintaxis zsh. Esto funciona bien, excepto por una rareza: cuando escribo una expansión de parámetro como argumento de comando, es decir

foo $PWD

Tan pronto como escribo $P, la expansión del parámetro se colorea en negro (lo que la hace invisible ya que uso un terminal con fondo negro). Permanece negro cuando escribo $PWy se vuelve visible (color de primer plano, pero subrayado) una vez que $PWDse escribe. Parece que los atributos resaltados son "fg=black" para un parámetro "inacabado/desconocido", pero simplemente sin línea para un parámetro conocido.

Me gusta el hecho de que tengan colores diferentes, ya que de esta manera puedo detectar errores tipográficos en el nombre de una variable con anticipación. Sin embargo, el negro es ilegible, ya que también tengo un fondo negro.

Más interesante aún, esto sucede sólo si la primera palabra de la línea es un comando externo (como fooen mi ejemplo) o una palabra clave de sintaxis ( if). No sucede si la primera palabra de la línea es un comando interno (como echo), una invocación de alias o una llamada de función.

Busqué en la documentación, pero no encontré dónde se podía definir este color de "expansión de parámetros inacabados".

Estoy usando los siguientes resaltadores:

ZSH_HIGHLIGHT_HIGHLIGHTERS=(main brackets pattern line)

Configuré varias categorías de resaltado, pero no hay ninguna en la que simplemente establezca el primer plano en negro.

Resalto algunos parámetros muy específicos, que son importantes para mí, como este:

ZSH_HIGHLIGHT_PATTERNS+=('$(oncoll|onyt|oncp|ong)' 'fg=black,bold,bg=white')

Pero esto tampoco puede tener ningún impacto en el problema descrito aquí.

¿Alguien sabe qué configuración de estilo me afecta aquí?

Respuesta1

Puedes encontrar todos los estilos predeterminados para el mainresaltador.aquí.

En este momento, el único estilo predeterminado con texto ( fg) configurado en negro escomentario.

No sé exactamente por qué ese foo $PWejemplo cuenta como comentario, pero eldocumentacióndescribe commentcomo:

comment- comentarios, cuando setopt INTERACTIVE_COMMENTSestá en vigor ( echo # foo)
comment- parámetros omitidos en la posición de comando ( $x lscuando $xno está configurado o está vacío)

La segunda condición parece estar vigente y $PWprobablemente no esté establecida.

información relacionada