Подсветка синтаксиса Bash для подоболочек


13

Учитывая большое количество вопросов , которые оказываются связанными с подоболочками в Bash ( «Почему не моя переменная прибавка в этом централизованной while readцикле ?»), Я просто подумала , что было бы очень хорошо , чтобы обратиться к некоторому редактору или службе , где код который будет выполняться в подоболочках, форматируется иначе, чем код, выполняемый в родительской оболочке. Это может быть полезно в качестве учебного устройства (см. Разницу между code | codeи code < <(code)мгновенно). Это существует?

Бонусные баллы, если кто-то реализует его для jEdit или VIm.

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


Я уверен, что вы могли бы добавить его к vimподсветке кода.
Кевин

2
@Kevin: Вопрос скорее в том, существует уже в любой форме. Конечно, его можно добавить в любой редактор, который поддерживает систему выделения Turing-complete.
10

1
В случае конвейерного цикла while POSIX не указывает, какая часть канала выполняется в родительском элементе, поэтому в качестве обучающего инструмента это выделение, если оно существует, научит людей писать непереносимые сценарии оболочки :(
Джеймс Янгман

@JamesYoungman: Еще одна причина сделать его специфичным для Bash :)
l0b0

Ответы:


2

Я не думаю, что это существует. Это было бы полезно, но трудно реализовать стандартными средствами синтаксического анализа, используемыми в редакторах. С точки зрения синтаксического анализа существует много ключевых слов и специальных символов, которые необходимо проанализировать, чтобы определить блок кода, который принадлежит подоболочке.

Но я был бы рад видеть, что я неправ, и кто-то приложил усилия, необходимые для создания таких конфигураций.


0

Мой Vim уже делает это.

Это на самом деле беспокоит меня, потому что это заставляет комментарии внутри подоболочек не применять правильное выделение.

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

Это Vim 7.3, патч 874, скомпилированный из исходного кода.


Иногда я устанавливаю тип файла, zshкогда я работаю в подоболочке. Это исправляет подсветку синтаксиса.

Боже мой, это прекрасно. Благодарность!! У меня должен быть весь этот огромный блок (с множеством комментариев) внутри подоболочки, чтобы я мог выполнить set -x; set -eэтот раздел. И захватить весь этот вывод, включая stderr, в журнал.
Стивен Лу

1
Я не вижу никакого форматирования в подоболочке, что кажется не очень полезным. Или это просто отсутствует на скриншоте?
l0b0

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