2011-02-08 83 views
5

我真的很喜歡,可以通過tcsh彩色的手冊頁?

export LESS_TERMCAP_mb=$'\E[01;31m' 
export LESS_TERMCAP_md=$'\E[01;31m' 
export LESS_TERMCAP_me=$'\E[0m' 
export LESS_TERMCAP_se=$'\E[0m' 
export LESS_TERMCAP_so=$'\E[01;44;33m' 
export LESS_TERMCAP_ue=$'\E[0m' 
export LESS_TERMCAP_us=$'\E[01;32m' 

在您的.bashrc或者.zshrc得以實現彩色手冊頁。 我的問題是:如何在tcsh中導出這些變量?我必須在工作中使用tcsh,並且無法使其工作。我嘗試了很多變化,但沒有奏效。簡單地用setenv替換出口,並用「」替換出口並不能解決問題。 但它應該以某種方式工作。如果我通過這個出口設置從我的zsh中啓動一個tcsh,我也可以在tcsh中享受有色的manpages。但這是一個醜陋的解決方法。

+1

你很可能是在超級用戶網站上問這個問題 – dotalchemy 2011-02-08 05:28:31

回答

4

問題是tcsh沒有解釋變量名稱中的轉義序列,所以當您嘗試使用tcsh設置環境變量時,環境變量最後會包含文字\E。這裏是你可以得到解決這個問題,使用bash解釋轉義序列的一種方式,雖然這是一個有點難看:

% setenv LESS_TERMCAP_md `bash -c 'echo -en "\e[01;31m"'` 
% setenv LESS_TERMCAP_me `bash -c 'echo -en "\e[0m"'` 
% setenv LESS_TERMCAP_se `bash -c 'echo -en "\e[0m"'` 
% setenv LESS_TERMCAP_so `bash -c 'echo -en "\e[01;44;33m"'` 
% setenv LESS_TERMCAP_ue `bash -c 'echo -en "\e[0m"'` 
% setenv LESS_TERMCAP_us `bash -c 'echo -en "\e[01;32m"'` 
+0

我同意,這有點難看,但它有效。雖然,我讓問題的狀態開放,也許我們會得到一個本地解決方案。 – skorgon 2011-02-08 06:13:47

6

要做到這一點是原產於tcsh的方式移植到不同的終端類型是使用的echotc內建命令:

setenv LESS_TERMCAP_mb `echotc md; echotc AF 1` 
setenv LESS_TERMCAP_md `echotc md; echotc AF 1` 
setenv LESS_TERMCAP_me `echotc me` 
setenv LESS_TERMCAP_se `echotc me` 
setenv LESS_TERMCAP_so `echotc md; echotc AF 3; echotc AB 4` 
setenv LESS_TERMCAP_ue `echotc me` 
setenv LESS_TERMCAP_us `echotc md; echotc AF 2` 

termcap代碼和顏色代碼參見man 5 terminfo

mdenter_bold_mode
meexit_attribute_mode
AFset_a_foreground
ABset_a_background

順便提一下,要做到這一點在Bash中,使用外部工具tput和terminfo的能力名稱:

export LESS_TERMCAP_mb=$(tput bold; tput setaf 1) 
export LESS_TERMCAP_md=$(tput bold; tput setaf 1) 
export LESS_TERMCAP_me=$(tput sgr0) 
export LESS_TERMCAP_se=$(tput sgr0) 
export LESS_TERMCAP_so=$(tput bold; tput setaf 3; tput setab 4) 
export LESS_TERMCAP_ue=$(tput sgr0) 
export LESS_TERMCAP_us=$(tput bold; tput setaf 2)