在fish shell中,实际命令行突出显示了语法:
有什么办法可以在bash中获得相同的行为?
有东西就是这样的,但对于zsh的,而不是bash的。是否有可能将其移植到bash?
为那些不了解屏幕截图,说明或链接的用户提供澄清:我想突出显示在终端上输入的实际文本。命令,括号,引号等。
在fish shell中,实际命令行突出显示了语法:
有什么办法可以在bash中获得相同的行为?
有东西就是这样的,但对于zsh的,而不是bash的。是否有可能将其移植到bash?
为那些不了解屏幕截图,说明或链接的用户提供澄清:我想突出显示在终端上输入的实际文本。命令,括号,引号等。
Answers:
Bash readline
用于交互输入,因此语法高亮将需要在该程序中实现。我在Google网上论坛中找到了有关如何编写此类功能的讨论。
您可能会发现它zsh
与bash非常相似,并且其行编辑器可扩展。我发现zsh-syntax-highlighting可以在zsh中启用此功能。
在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
# 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
注意:我知道有时回答带有自己产品的链接的问题被认为是自我推销,因此不受欢迎,因此我一直拒绝回答此问题。但是,没有其他解决方案出现的时间很长,而且这个问题也有很多观点(反映了其巨大的需求)。因此,我决定今天回答这个问题。参考以下元问题/答案,我首先描述了这个想法,然后提供了到我的项目的链接作为示例实现。
是的,我必须承认这实际上是自我推广,但是我相信这会对想要该功能的人有所帮助。如果有问题,请通过评论告诉我。
我认为语法高亮不应该在外壳程序级别上发生,而应该在接口级别上发生(只是我的看法- 似乎有人认为),因此我会研究终端或您最喜欢的控制台的“插件”,例如此插件用于凯特(Kate)可能会有所帮助,或者另一种在nano中提供语法高亮显示的工具
这里还有更多关于如何在终端中突出显示语法的内容:
将别名ls ='ls -G'添加到.bash_profile。
虽然这里更好地解释了如何
希望能帮助到你
ls
基于文件类型的命令输出,这与shell语法无关。