Colors
如何為 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 上添加您的答案。