Não existe uma maneira simples de obter realce de sintaxe no GNU Bash (ou GNU Readline), mas é, em princípio, possível implementar seu próprio editor de linha nos scripts Bash, vinculando todas as entradas do usuário às funções do shell usando o comando embutido bind -x 'BYTE: SHELL-COMMAND'
. É claro que é possível integrar o recurso de destaque de sintaxe em seu próprio editor de linha.
Na verdade, implementei um editor de linha ble.sh
com recursos como destaque de sintaxe e sugestões automáticas. Ele suporta o Bash 3.0--5.0. Como está escrito em scripts Bash (quase) puros, você pode apenas source
o script ~/.bashrc
. Aqui está um exemplo para configurar ble.sh
no bashrc (consulte o README para obter detalhes):
$ 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
Nota : Sei que às vezes responder a perguntas com links para produtos próprios é considerado autopromoção e imprevisível, por isso evitei responder a essa pergunta. No entanto, nenhuma outra solução apareceu por muito tempo, e essa pergunta também tem muitas visões (o que reflete sua demanda significativa). Então, eu decidi responder a esta pergunta hoje. Referindo as seguintes meta perguntas / respostas, descrevi a idéia primeiro e a seguir forneceu um link para o meu projeto como uma implementação de exemplo.
Sim, tenho que admitir que isso é realmente autopromoção , mas acredito que isso ajude as pessoas que desejam o recurso. Se houver problemas, eu apreciaria se você pudesse me dizer isso pelos comentários.