这个网页很好地解释了如何将颜色添加到命令的任何输出中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 中