Wuf*_*ers 54 bash fish syntax-highlighting
在fish shell 中,实际的命令行以语法高亮显示:

有没有办法在 bash 中获得相同的行为?
有类似的东西,但对于 zsh,而不是 bash。这有可能移植到 bash 吗?
为那些不理解所提供的屏幕截图、解释或链接的人澄清:我想突出显示在终端输入的实际文本。命令、括号、引号等。
小智 12
Bashreadline用于交互式输入,因此需要在该程序中实现语法突出显示。我找到了一个关于如何编写这样一个功能的Google Groups 讨论。
fish shell 使用自己的行编辑器,该编辑器特定于该程序,不能直接移植。
您可能会发现它zsh与 bash 非常相似,并且它的行编辑器是可扩展的。我发现zsh-syntax-highlighting可以在 zsh 中启用此功能。
aki*_*oga 10
在 GNU Bash(或 GNU Readline)中没有获得语法高亮的简单方法,但原则上可以通过使用内置命令将所有用户输入绑定到 shell 函数来在 Bash 脚本中实现您自己的行编辑器bind -x 'BYTE: SHELL-COMMAND'。当然可以在您自己的行编辑器中集成语法高亮功能。
事实上,我实现了一个ble.sh具有语法高亮和自动建议等功能的行编辑器。它支持 Bash 3.0--5.0。由于它是用(几乎)纯 Bash 脚本编写的,因此您可以只source使用~/.bashrc. 这是ble.sh在 bashrc 中设置的示例(有关详细信息,请参阅自述文件):
$ git clone https://github.com/akinomyoga/ble.sh.git
$ cd ble.sh
$ make
$ make INSDIR="$HOME/.local/share/blesh" install
Run Code Online (Sandbox Code Playgroud)
# 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_VERSION-} ]] && ble-attach
Run Code Online (Sandbox Code Playgroud)
注意:我知道有时回答带有自己产品链接的问题被认为是自我推销和不可取的,所以我一直避免回答这个问题。但是,好久没有出现其他解决方案,而且这个问题也有很多观点(这反映了它的巨大需求)。所以我今天决定回答这个问题。参考以下元问题/答案,我首先描述了这个想法,然后提供了一个指向我的项目的链接作为示例实现。
是的,我不得不承认这实际上是自我推销,但我相信这有助于想要该功能的人。如果有问题,如果您能通过评论告诉我,我将不胜感激。
小智 -7
我不认为语法高亮应该发生在 shell 级别,而应该发生在接口级别(只是我的观点 -似乎是其他人的观点 -),所以我会研究终端或你最喜欢的控制台的“插件”,例如这个插件Kate 可能会有所帮助,或者另一个在 nano 中提供语法突出显示的工具
这里还更多地讨论如何在终端中进行语法高亮:
将别名 ls='ls -G' 添加到 .bash_profile。
虽然这里更好地解释了如何
希望能帮助到你