Виділення синтаксису Bash підшарів


13

Враховуючи велику кількість питань, які, як виявляється, пов'язані з підрозділами в Bash ("Чому мій приріст змінної в цьому трубопроводному while readциклі ?"), Я просто подумав, що було б дуже приємно звернутися до якогось редактора чи служби, де код який буде виконуватися в підшах, форматується інакше, ніж код, виконаний у батьківській оболонці. Це може бути корисним в якості навчального пристрою (побачити різницю між code | codeі code < <(code)миттєво). Чи існує це?

Бонусні бали, якщо хтось реалізує його для jEdit або VIm.

Очевидно , що це не повинно бути досконалим (без підсвічування синтаксису є, з мого досвіду), але я підозрюю , що такі речі , як (foo=bar; echo $foo;)і command | while read ...не повинно бути занадто складно для початку.


Я впевнений, що ви можете додати його до vimвиділення коду.
Кевін

2
@Kevin: Скоріше питання, чи воно вже існує, в будь-якій формі. Звичайно, його можна додати до будь-якого редактора, який підтримує повну систему виділення Тьюрінга.
l0b0

1
Що стосується циклу "pipeped while", POSIX не визначає, яка частина труби виконується у батьківській програмі, тому в якості навчального інструменту ця підсвітка, якби вона існувала, навчила б людей писати не портативні сценарії оболонки :(
Джеймс Янгмен

@JamesYoungman: Ще одна причина, щоб зробити це специфічним для Баша :)
l0b0

Відповіді:


2

Я не думаю, що це існує. Було б корисно, але важко реалізувати за допомогою стандартних засобів синтаксичного розбору, що використовуються в редакторах. З точки зору розбору, існує безліч ключових слів та спеціальних символів, які доведеться проаналізувати, щоб визначити блок коду, що належить до підшару.

Але я би радий бачити, що я помиляюся, і хтось доклав зусиль, необхідних для створення таких конфігурацій.


0

Мій Вім вже це робить.

Це насправді турбує мене, тому що він викликає коментарі всередині підрозділів, щоб не застосувати належне виділення.

введіть тут опис зображення

Це патч 874 Vim 7.3, зібраний з джерела.


Іноді я встановлюю тип файлу, zshколи я працюю в рамках передплати. Це виправляє виділення синтаксису.

OMG, що ідеально. Спасибі!! У мене повинен бути весь цей величезний блок (з безліччю коментарів) всередині підкашлю, щоб я міг зробити set -x; set -eцей розділ. І захопити весь цей вихід, включаючи stderr до журналу.
Стівен Лу

1
Я не бачу якоїсь - або форматування в субоболочке, який , здається , не дуже корисно. Або він просто відсутній у скріншоті?
l0b0

набір змінних та trapключове слово там виділено. це просто не вдалося виділити коментарі. тип файлу zsh працює. Тепер, що стосується відмежування допоміжної оболонки від основної оболонки, (яка, зрештою, те, що ви хотіли, я думаю), добре ....... використовувати деякі коментарі?
Стівен Лу
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.