Немає простого способу отримати виділення синтаксису в 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
Примітка . Я знаю, що інколи відповідати на запитання із посиланнями на власні продукти вважається саморекламою та невибагливою, тому я не вдавався відповідати на це питання. Однак жодне інше рішення не з’являлося тривалий час, і також це питання має багато поглядів (що відображає його значний попит). Тому я вирішив сьогодні відповісти на це питання. Посилаючись на наступні мета-запитання / відповіді, я спершу описав ідею, а далі подав посилання на мій проект як приклад реалізації.
Так, я мушу визнати, що це насправді самореклама , але я вважаю, що це допомагає людям, які бажають цієї функції. Якщо є проблеми, я би вдячний, якщо ви можете сказати мені це за допомогою коментарів.