Mise en évidence de la syntaxe Bash des sous-coquilles

13

Compte tenu de la grande quantité de questions qui s'avèrent être liées aux sous-coquilles dans Bash ("Pourquoi mon incrément de variable dans cette boucle pipedwhile read ?"), Je pensais juste qu'il serait très agréable de se référer à un éditeur ou un service où le code qui sera exécuté en sous-shell est formaté différemment du code exécuté dans le shell parent. Il pourrait être utile comme appareil éducatif (voir la différence entre code | codeet code < <(code)instantanément). Cela existe-t-il?

Points bonus si quelqu'un l'implémente pour jEdit ou VIm.

Évidemment, cela ne doit pas être parfait (pas de mise en évidence de la syntaxe, selon mon expérience), mais je soupçonne des choses comme (foo=bar; echo $foo;)et command | while read ...ne devrait pas être trop difficile pour commencer.

l0b0
la source
Je suis sûr que vous pouvez l'ajouter à vimla mise en évidence du code.
Kevin
2
@Kevin: La question est plutôt de savoir si elle existe déjà , sous quelque forme que ce soit. Il pourrait bien sûr être ajouté à n'importe quel éditeur prenant en charge un système de surbrillance Turing-complete.
l0b0
1
Dans le cas de la boucle while canalisée, POSIX ne spécifie pas quelle partie du tube s'exécute dans le parent, donc en tant qu'outil pédagogique, cette mise en évidence, si elle existait, apprendrait aux gens à écrire des scripts shell non portables :(
James Youngman
@JamesYoungman: Une autre raison de le rendre spécifique à Bash :)
l0b0

Réponses:

2

Je ne pense pas que cela existe. Il serait utile, mais difficile à mettre en œuvre par des moyens standard d'analyse syntaxique utilisés dans les éditeurs. Du point de vue de l'analyse, il existe de nombreux mots clés et symboles spéciaux qui devraient être analysés pour déterminer un bloc de code appartenant à un sous-shell.

Mais je serais heureux de voir que je me trompe et que quelqu'un a mis l'effort nécessaire pour créer de telles configurations.

rozcietrzewiacz
la source
0

Mon Vim le fait déjà.

En fait, cela me dérange, car cela empêche les commentaires à l'intérieur des sous-coquilles d'appliquer la mise en surbrillance appropriée.

entrez la description de l'image ici

Il s'agit du patch 874 de Vim 7.3 compilé à partir de la source.

Steven Lu
la source
Parfois, je définis le type de fichier zshlorsque je travaille dans un sous-shell. Cela corrige la coloration syntaxique.
OMG c'est parfait. Merci!! Je dois avoir cet énorme bloc entier (avec beaucoup de commentaires) à l'intérieur du sous-shell afin que je puisse faire le set -x; set -esur cette section. Et pour capturer toutes ces sorties, y compris stderr, dans un journal.
Steven Lu
1
Je ne vois aucun formatage dans le sous-shell, ce qui ne semble pas très utile. Ou est-ce juste absent de la capture d'écran?
l0b0
l'ensemble de variables et le trapmot-clé y sont mis en évidence. il n'a tout simplement pas mis en évidence les commentaires. le type de fichier zsh fonctionne cependant. Maintenant, en ce qui concerne la différenciation du sous-shell du shell principal, (ce qui est après tout ce que vous vouliez, je suppose), eh bien ....... utilisez quelques commentaires?
Steven Lu