Нет простого способа получить подсветку синтаксиса в GNU Bash (или GNU Readline), но в принципе возможно реализовать собственный редактор строк в сценариях Bash, привязав все пользовательские входные данные к функциям оболочки с помощью встроенной команды bind -x 'BYTE: SHELL-COMMAND'
. Конечно, можно интегрировать функцию подсветки синтаксиса в свой собственный редактор строк.
Фактически я реализовал линейный редактор ble.sh
с такими функциями, как подсветка синтаксиса и автоматические предложения. Он поддерживает Bash 3.0--5.0. Поскольку он написан в (почти) чистых скриптах Bash, вы можете просто написать source
скрипт ~/.bashrc
. Вот пример для настройки ble.sh
в bashrc (см. README ):
$ git clone https://github.com/akinomyoga/ble.sh.git
$ cd ble.sh
$ make
$ make INSDIR="$HOME/.local/share/blesh" install
# bashrc
# Add the following line at the beginning of bashrc
[[ $- == *i* ]] &&
source "$HOME/.local/share/blesh/ble.sh" --attach=none
# ... other bashrc settings ...
# Add the following line at the end of bashrc
((_ble_bash)) && ble-attach
Примечание : я знаю, что иногда ответы на вопросы со ссылками на собственные продукты считаются саморекламой и неприемлемыми, поэтому я воздерживался от ответа на этот вопрос. Однако никаких других решений не появилось долгое время, а также этот вопрос имеет много точек зрения (что отражает его значительный спрос). Поэтому я решил ответить на этот вопрос сегодня. Ссылаясь на следующие мета вопросы / ответы, я сначала описал идею, а затем предоставил ссылку на мой проект в качестве примера реализации.
Да, я должен признать, что это на самом деле самореклама , но я считаю, что это помогает людям, которые хотят эту функцию. Если есть проблемы, я был бы признателен, если бы вы могли сказать мне это в комментариях.