No hay una manera simple de obtener resaltado de sintaxis en GNU Bash (o GNU Readline), pero en principio es posible implementar su propio editor de línea en scripts Bash vinculando todas las entradas del usuario a las funciones de shell utilizando el comando incorporado bind -x 'BYTE: SHELL-COMMAND'
. Por supuesto, es posible integrar la función de resaltado de sintaxis en su propio editor de línea.
De hecho, implementé un editor de líneas ble.sh
con características como resaltado de sintaxis y sugerencias automáticas. Es compatible con Bash 3.0--5.0. Dado que está escrito en scripts de Bash (casi) puros, puede ingresar source
el script ~/.bashrc
. Aquí hay una muestra para configurar ble.sh
en bashrc (ver README para más detalles):
$ 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 : Sé que a veces responder preguntas con enlaces a productos propios se considera autopromoción y no es preferible, por lo que me he abstenido de responder a esta pregunta. Sin embargo, no aparecieron otras soluciones durante mucho tiempo, y esta pregunta también tiene muchos puntos de vista (lo que refleja su importante demanda). Así que decidí responder a esta pregunta hoy. Refiriéndome a las siguientes preguntas / respuestas meta, describí la idea primero y luego proporcioné un enlace a mi proyecto como ejemplo de implementación.
Sí, tengo que admitir que esto es en realidad autopromoción , pero creo que esto ayuda a las personas que desean la función. Si hay problemas, le agradecería que me lo dijera mediante comentarios.