如何获得彩色的标签完成?


18

在终端中使用制表符补全时,有没有办法获得彩色输出?我的颜色在其他任何地方都很好,所以我知道我已经成功启用了颜色终端。

在Ubuntu(10.10)中使用bash。


如何指定“使用制表符补全时的彩色输出”?
slhck 2011年

Answers:


21

Bash中没有工具可以像鱼和zsh一样在完成过程中进行颜色输出。可以编写输出颜色控制序列的补全功能,但是您必须维护建议的补全的副本(带或不带颜色代码),或者在用户进行选择时将其删除,因为Bash通常直接使用选择,而颜色代码会挡路。

如果这对您来说是重要的功能,我建议您考虑使用zsh。

更新资料

Bash 4.3 readline添加了一个变量,该变量启用选项卡补全的颜色以在选项卡补全期间为可执行文件,目录等显示不同的颜色:

colored-stats

即将发布的Bash 4.4中的Readline添加了一个变量,该变量使颜色能够在制表符完成期间指示字符串的匹配部分。

colored-completion-prefix

您可以使用以下命令查看这些变量的值

bind -v | grep color

要设置它们,请在~/.inputrc文件中添加以下行:

set colored-stats on

1
@Ryan:Zsh与Bash完全兼容。您可能会发现切换非常简单。它具有Bash所没有的许多强大功能(或者您必须使用外部实用程序)。只有几件事在基础上有很大不同。一个例子是数组索引是从1开始的,而不是从0开始的,但是有一个设置会影响它。我只是偶尔使用zsh。
暂停,直到另行通知。

1
@AstroFloyd:来自Bash Manua:“颜色定义来自LS_COLORS环境变量的值。” 该变量的文档在这里man页面没有设置,因此您需要查看LS_COLORS设置的位置,找到对应的颜色组合并进行更改。在我的系统上,man页面名称在制表符完成时不会变色(符号链接断开,而ls输出显示为红色,...
暂停,直到另行通知。)

1
...为浅蓝色,就像在制表符完成期间的有效符号链接一样)。
暂停,直到另行通知。

1
@AndyCarlson:是否同时bind -v | grep color显示set colored-completion-prefix onset colored-stats on?如果是这样,当您键入字母a并按两次Tab键时会发生什么?如果您已将设置添加到您的设置中,~/.inputrc但尚未启动新终端或未按re-read-init-fileCtrl-x Control-R来执行,则设置将不会生效。
暂停,直到另行通知。

2
@AndyCarlson当您按ctrl-x ctrl-v时,bash提示符下会输出什么?
暂停,直到另行通知。

3

我不知道完成颜色命令选项和参数,但对于文件名和目录,根据(/unix//a/133866)user495470指出,在猛砸4.3及更高版本,您可以添加set colored-stats on~/.inputrc以获得彩色完成的时候做ls <tab>

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.