¿Cómo obtener una ficha de color completado?

15

¿Hay alguna forma de obtener una salida de color cuando se usa la terminación de pestañas en un terminal? Mis colores están bien en todas partes, así que sé que he habilitado un terminal de color correctamente.

Utilizando bash en Ubuntu (10.10).

Ryan
fuente
¿Cómo se especifica una "salida de color cuando se utiliza la finalización de tabulación"?
slhck

Respuestas:

18

No hay facilidad dentro de Bash para dar color a la salida durante la finalización, ya que existe en fish y zsh. Uno podría escribir funciones de terminación que generen secuencias de control de color, pero tendría que mantener copias de las terminaciones propuestas con y sin códigos de color o eliminarlas cuando el usuario realice una selección, ya que Bash usa la selección directamente normalmente y los códigos de color estorbar.

Si esta es una característica importante para usted, le recomiendo que considere usar zsh.

Actualizar

Bash 4.3 readline agrega una variable que permite que el color para completar la pestaña muestre diferentes colores para archivos ejecutables, directorios, etc., durante la finalización de la pestaña:

colored-stats

Readline en el próximo Bash 4.4 agrega una variable que permite que el color indique la parte correspondiente de la cadena al completar la pestaña.

colored-completion-prefix

Puedes ver los valores de estas variables usando

bind -v | grep color

Para establecerlos, agregue líneas a su ~/.inputrc archivo como:

set colored-stats on
Dennis Williamson
fuente
Buscaré en zsh, pero en este punto me temo que soy demasiado perezosa para cambiar a una cáscara diferente :) ¡Gracias por la aclaración!
Ryan
@Ryan: Zsh es bastante compatible con Bash. Probablemente encuentre que el cambio es bastante fácil. Tiene muchas funciones potentes que Bash no tiene (o tiene que usar utilidades externas para). Hay solo algunas cosas que son significativamente diferentes en los conceptos básicos. Un ejemplo es que los índices de matriz se basan en uno en lugar de en cero, pero hay una configuración que afecta eso. Aunque solo uso zsh de vez en cuando.
Dennis Williamson
¿Hay alguna manera de cambiar los colores por defecto? P.ej. las opciones de finalización para las páginas de manual parpadean (sobre un fondo rojo, como enlaces simbólicos rotos en mi sistema), lo que las hace invisibles la mitad del tiempo y difíciles de escanear a simple vista.
AstroFloyd
1
@AstroFloyd: Desde el Manual de Bash : "Las definiciones de color se toman del valor del LS_COLORS variable de entorno. "La documentación para esa variable es aquí . No hay un escenario para man páginas, por lo que tendrá que mirar dónde está su LS_COLORS Se establece y encuentra la combinación de colores que corresponda y cámbiela. En mi sistema, man los nombres de las páginas no se colorean cuando se completan las pestañas (y enlaces simbólicos rotos, mientras que en rojo sobre gris ls salida, ...
Dennis Williamson
... son de color azul claro como enlaces simbólicos válidos durante la finalización de la pestaña).
Dennis Williamson
2

No sé acerca de los colores de terminación para las opciones de comando y los argumentos, sino para el nombre de archivo y los directorios, de acuerdo con ( https://unix.stackexchange.com/a/133866 ) user495470 indica que en Bash 4.3 y posterior puede agregar set colored-stats on a ~/.inputrc para obtener la terminación de color cuando lo haces ls <tab>.

James Choi
fuente