Podświetlanie składni podpowłoki Bash


13

Biorąc pod uwagę dużą liczbę pytań, które okazują się być związane z podpowłokami w Bash („Dlaczego mój zmienny przyrost w tej pętli potokowejwhile read ?”), Po prostu pomyślałem, że byłoby miło nawiązać do jakiegoś edytora lub usługi, w której kod który zostanie wykonany w podpowłoce jest sformatowany inaczej niż kod wykonywany w powłoce nadrzędnej. Może być przydatny jako narzędzie edukacyjne (zobacz różnicę pomiędzy code | codei code < <(code)natychmiast). Czy to istnieje?

Punkty bonusowe, jeśli ktoś zaimplementuje je w jEdit lub VIm.

Oczywiście to nie musi być doskonały (brak podświetlanie składni, z mojego doświadczenia), ale podejrzewam, że takie rzeczy (foo=bar; echo $foo;)i command | while read ...nie powinno być zbyt trudne na początek.


Jestem pewien, że możesz dodać go do vimpodświetlania kodu.
Kevin

2
@Kevin: Pytanie brzmi raczej, czy już istnieje, w jakiejkolwiek formie. Można go oczywiście dodać do dowolnego edytora, który obsługuje system podświetlania Turing-complete.
l0b0

1
W przypadku pętli potokowej while POSIX nie określa, która część potoku ma być wykonywana w obiekcie nadrzędnym, tak więc jako narzędzie do nauczania, to wyróżnienie, jeśli istnieje, nauczyłoby ludzi pisania nieprzystosowanych skryptów powłoki :(
James Youngman

@JamesYoungman: Kolejny powód, aby uczynić go specyficznym dla Bash :)
l0b0

Odpowiedzi:


2

Nie sądzę, że to istnieje. Byłoby użyteczne, ale trudne do wdrożenia za pomocą standardowych metod analizy składniowej używanych w edytorach. Z punktu widzenia analizy istnieje wiele słów kluczowych i specjalnych symboli, które należałoby przeanalizować, aby ustalić blok kodu należący do podpowłoki.

Ale byłbym szczęśliwy widząc, że się mylę i ktoś włożył wysiłek w stworzenie takich konfiguracji.


0

Mój Vim już to robi.

W rzeczywistości mnie to niepokoi, ponieważ powoduje, że komentarze w podpowłokach nie mają zastosowania odpowiedniego podświetlenia.

wprowadź opis zdjęcia tutaj

To jest Vim 7.3 patch 874 skompilowany ze źródła.


Czasami ustawiam typ pliku na, zshgdy pracuję w podpowłoce. To poprawia podświetlanie składni.

OMG, który jest idealny. Dzięki!! Muszę mieć cały ten ogromny blok (z wieloma komentarzami) wewnątrz podpowłoki, aby móc wykonać set -x; set -etę sekcję. I aby przechwycić wszystkie te dane wyjściowe, w tym stderr, do dziennika.
Steven Lu

1
Nie widzę żadnego formatowania w podpowłoce, co nie wydaje się bardzo przydatne. A może po prostu brakuje go na zrzucie ekranu?
l0b0

zestaw zmiennych i trapsłowo kluczowe są tam podświetlone. po prostu nie podświetlił komentarzy. typ pliku zsh jednak działa. Teraz, jeśli chodzi o odróżnienie podpowłoki od głównej powłoki (która przecież jest tym, czego chciałeś, chyba), cóż ... wykorzystaj kilka komentarzy?
Steven Lu
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.