Resaltado de sintaxis Bash de subcapas

13

Teniendo en cuenta la gran cantidad de preguntas que resultan estar relacionadas con subcapas en Bash ("¿Por qué no aumenta mi variable en este bucle canalizadowhile read ?"), Pensé que sería muy bueno referirme a algún editor o servicio donde el código que se ejecutará en subshells está formateado de manera diferente al código ejecutado en el shell padre. Puede ser útil como un dispositivo educativo (vea la diferencia entre code | codee code < <(code)instantáneamente). ¿Existe esto?

Puntos de bonificación si alguien lo implementa para jEdit o VIm.

Obviamente, no tiene que ser perfecto (en mi experiencia, no hay resaltado de sintaxis), pero sospecho que cosas como (foo=bar; echo $foo;)y command | while read ...no deberían ser demasiado difíciles para empezar.

l0b0
fuente
Estoy seguro de que podría agregarlo al vimresaltado de código.
Kevin
2
@Kevin: La pregunta es si ya existe, en cualquier forma. Por supuesto, podría agregarse a cualquier editor que admita un sistema de resaltado completo de Turing.
l0b0
1
En el caso del bucle piped while, POSIX no especifica qué parte de la tubería se ejecuta en el padre, por lo que como herramienta de enseñanza, este resaltado, si existiera, enseñaría a las personas a escribir scripts de shell no portátiles :(
James Youngman
@JamesYoungman: Otra razón para hacerlo específico para Bash :)
l0b0

Respuestas:

2

No creo que esto exista. Sería útil, pero difícil de implementar por medio del análisis sintáctico de sintaxis utilizado en los editores. Desde el punto de vista del análisis, hay muchas palabras clave y símbolos especiales que tendrían que analizarse para determinar un bloque de código que pertenece a una subshell.

Pero me alegraría ver que estoy equivocado y alguien ha puesto el esfuerzo necesario para crear tales configuraciones.

rozcietrzewiacz
fuente
0

Mi Vim ya hace esto.

Realmente me molesta, porque hace que los comentarios dentro de las subcapas no apliquen el resaltado adecuado.

ingrese la descripción de la imagen aquí

Este es el parche 874 de Vim 7.3 compilado desde la fuente.

Steven Lu
fuente
A veces configuro el tipo de archivo zshcuando estoy trabajando dentro de una subshell. Eso corrige el resaltado de sintaxis.
Dios mío, eso es perfecto. ¡¡Gracias!! Tengo que tener todo este bloque enorme (con muchos comentarios) dentro de la subshell para poder hacer set -x; set -eeso en esa sección. Y para capturar toda esa salida, incluido stderr en un registro.
Steven Lu
1
No veo ningún formato en la subshell, lo que no parece muy útil. ¿O solo falta en la captura de pantalla?
l0b0
el conjunto de variables y la trappalabra clave se resaltan allí. simplemente no pudo resaltar los comentarios. Sin embargo, el tipo de archivo zsh funciona. Ahora, en cuanto a diferenciar el shell secundario del shell principal (que, después de todo, es lo que quería, supongo), bueno ... ¿usa algunos comentarios?
Steven Lu