Colors

如何為 tcsh 中的製表符補全提供顏色?

  • October 11, 2021

從 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如果您使用’命令使其以任何方式工作,complete我可能會適應(考慮perl -pe包裝器等)。

我認為這必須以某種方式起作用的原因是,如果您鍵入ls [TAB]. 這在我的設置中正常工作。您也可以ls -1F在自動完成內部使用,並且輸出的顏色ls也可以通過管道傳輸。一個例子是:

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

更新:正如使用者mavin在 stackoverflow 上指出ls的那樣,這個例子中的著色確實沒有通過管道傳遞。的顏色ls會失去,但自動補全可以根據 LS_COLOURS 變數重新應用顏色,該變數基於 ls 添加的/*標記結尾等提示。這可以通過執行來驗證

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

它無法提供顏色,僅提供亂碼輸出。(字面意思是通過轉義字元序列管道)

我在tcsh版本 6.13.00

有任何想法嗎?指針?

這似乎是不可能的,我希望它的工作方式。在 Stack Overflow 上,使用者 mavit 提供了這個答案,這是最接近我追捧的行為的答案。

如果您有更好的解決方案而沒有各種答案和評論中討論的缺點,請在此處或 Stack Overflow 上添加您的答案。

引用自:https://unix.stackexchange.com/questions/58156