Evidenziazione della sintassi di Bash dei subshells


13

Considerando la grande quantità di domande che risultano essere correlate ai subshells in Bash ("Perché il mio incremento variabile in questo ciclo di pipingwhile read ?"), Ho pensato che sarebbe stato molto bello fare riferimento a qualche editor o servizio in cui il codice che verrà eseguito in subshells è formattato diversamente dal codice eseguito nella shell padre. Potrebbe essere utile come dispositivo educativo (vedi la differenza tra code | codee code < <(code)istantaneamente). Esiste?

Punti bonus se qualcuno lo implementa per jEdit o VIm.

Ovviamente non deve essere perfetto (nessuna evidenziazione della sintassi è, nella mia esperienza), ma sospetto cose come (foo=bar; echo $foo;)e command | while read ...non dovrebbe essere troppo difficile per iniziare.


Sono sicuro che potresti aggiungerlo vimall'evidenziazione del codice.
Kevin,

2
@Kevin: La domanda è piuttosto se esiste già , in qualsiasi forma. Naturalmente potrebbe essere aggiunto a qualsiasi editor che supporti un sistema di evidenziazione completo di Turing.
l0b0,

1
Nel caso del ciclo while piped, POSIX non specifica quale parte della pipe viene eseguita nel genitore, quindi come strumento di insegnamento, questa evidenziazione, se esistesse, insegnerebbe alle persone a scrivere script shell non portatili :(
James Youngman,

@JamesYoungman: un altro motivo per renderlo specifico per Bash :)
l0b0

Risposte:


2

Non penso che questo esista. Sarebbe utile, ma difficile da implementare mediante l'analisi standard della sintassi utilizzata negli editor. Dal punto di vista dell'analisi, ci sono molte parole chiave e simboli speciali che dovrebbero essere analizzati per determinare un blocco di codice che appartiene a una subshell.

Ma sarei felice di vedere che ho torto e qualcuno ha fatto lo sforzo necessario per creare tali configurazioni.


0

My Vim lo fa già.

In realtà mi dà fastidio, perché fa sì che i commenti all'interno dei sottotitoli non vengano applicati all'evidenziazione corretta.

inserisci qui la descrizione dell'immagine

Questa è la patch 874 di Vim 7.3 compilata dal sorgente.


A volte imposto il tipo di file su zshquando lavoro all'interno di una subshell. Ciò corregge l'evidenziazione della sintassi.

OMG che è perfetto. Grazie!! Devo avere questo intero blocco enorme (con molti commenti) all'interno della subshell in modo da poter fare quello set -x; set -esu quella sezione. E per catturare tutto quell'output incluso stderr in un registro.
Steven Lu,

1
Non vedo alcuna formattazione nella subshell, che non sembra molto utile. O manca solo dallo screenshot?
10

il set di variabili e la trapparola chiave sono evidenziati lì. non è riuscito a evidenziare i commenti. il tipo di file zsh funziona però. Ora, per quanto riguarda la differenziazione della sub shell dalla shell principale, (che dopotutto è quello che volevi immagino), beh ....... usi alcuni commenti?
Steven Lu,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.