6

我真的很喜欢可以通过以下方式实现的彩色联机帮助页

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 并且无法使其正常工作。我尝试了很多变化,但没有任何效果。简单地将 export 替换为 setenv 并将 = 替换为 " " 并不能解决问题。但它应该以某种方式工作。如果我使用这个导出集从我的 zsh 启动一个 tcsh,我也可以在 tcsh 中享受彩色联机帮助页。但这是一个丑陋的解决方法。

4

2 回答 2

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`

请参阅man 5 terminfo代码termcap和颜色代码。

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)
于 2011-02-08T10:16:26.027 回答
5

问题是 tcsh 没有解释变量名中的转义序列,因此\E当您尝试使用 tcsh 对其进行设置时,环境变量最终会在其中包含文字。这是您可以解决这个问题的一种方法,使用 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"'`
于 2011-02-08T05:39:50.390 回答