如何在 tcsh 中为制表符补全提供颜色?

如何在 tcsh 中为制表符补全提供颜色?

交叉发布自 StackOverflow.com

这个问题答案教我们如何在 tcsh 提示中引入颜色。

这个网页很好地解释了如何将颜色添加到命令的任何输出中echo

> echo \\e[1\;30mBLACK\\e[0m
BLACK
> echo '\e[1;30mBLACK\e[0m'
BLACK

上例中的“BLACK”一词以黑色(或深灰色)前景色打印(取决于整体配色方案)。

现在我想将其引入[TAB]tcsh.我试过:

complete testcmd 'p/*/`echo '"'"'\e[1;30mf834fef\e[0m'"'"'`/'

我得到:

> testcmd [TAB]
> testcmd ^[\[1\;30mf834fef^[\[0m

显然这些字符失去了特殊的意义。希望我只是没有正确逃脱。但我尝试了其他几种方法。因此,我们将不胜感激任何帮助。

真正的用例是我有一个命令完成,它提供三种不同类型的完成,我想在视觉上区分这些类型。替代方案也是由外部命令计算的。这就是为什么我需要完成才能将反引号与外部命令一起使用,例如echo.我不关心这个命令的细节。如果您使用tcsh's命令使其以任何方式工作,complete我可能能够适应(考虑perl -pe包装器等)。

我相信这一点的原因以某种方式工作的是,如果您键入 ,tcsh 本身会提供彩色命令完成ls [TAB]。这在我的设置中工作正常。您还可以ls -1F在自动完成内部使用,并且输出的颜色ls也会通过管道传输。一个例子是:

complete testcmd 'p/*/`ls -1F`/'

更新:作为用户 mavinstackoverflow 上指出,这个例子中的着色ls确实没有通过管道传输。的颜色ls丢失,但自动完成功能可以根据 LS_COLOURS 变量根据ls 添加的/和标记结尾等提示重新应用颜色。*这可以通过执行来验证

complete testcmd 'p/*/`ls --color -1`/'

它无法提供颜色,并且仅提供乱码输出。 (从字面上通过转义字符序列进行管道传输)

我的tcsh版本是6.13.00

有任何想法吗?指针?

答案1

这似乎不可能,按照我希望的方式工作。在 Stack Overflow 上,用户 mavit 提供了这个答案这是最接近我所追求的行为的一种。

如果您有更好的解决方案,并且没有各种答案和评论中讨论的缺点,请在此处或 Stack Overflow 上添加您的答案。

答案2

尝试添加:set color在 ~/.cshrc 或 ~/.tcshrc 中

相关内容