2011-02-08 27 views
5

Tôi thực sự thích trang man màu mà có thể được thực hiện bằngTrang màu với 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' 

trong .bashrc hoặc zshrc của bạn. Câu hỏi của tôi là: Làm cách nào để xuất các biến này trong tcsh? Tôi phải sử dụng tcsh tại nơi làm việc và không thể làm việc đó được. Tôi đã thử rất nhiều biến thể, nhưng không có gì hiệu quả. Chỉ cần thay thế xuất bằng setenv và = with "" sẽ không thực hiện thủ thuật. Nhưng nó sẽ hoạt động bằng cách nào đó. Nếu tôi bắt đầu một tcsh ra khỏi zsh của tôi với bộ xuất khẩu này tôi có thể thưởng thức các trang man màu trong tcsh, cũng có. Nhưng đó là một cách giải quyết xấu.

+1

Bạn có thể sẽ tter off yêu cầu này qua tại superuser.com – dotalchemy

Trả lời

4

Vấn đề là tcsh không giải thích trình tự thoát trong tên biến của bạn, vì vậy biến môi trường kết thúc bằng một chữ số \E trong đó khi bạn cố gắng đặt nó bằng tcsh. Dưới đây là một cách để bạn có thể nhận được xung quanh đó, sử dụng Bash để giải thích các trình tự thoát, mặc dù đó là một chút xấu xí:

% 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

Tôi đồng ý, đó là một chút xấu xí, nhưng nó hoạt động. Mặc dù, tôi để trạng thái của câu hỏi mở, có lẽ chúng ta sẽ có một giải pháp riêng. – skorgon

+1

Bạn có thể làm điều này mà không cần sử dụng bash (tùy thuộc vào cài đặt của 'echo_style'. –

6

Cách để làm điều này mà có nguồn gốc tcsh và là di động với các loại thiết bị đầu cuối khác nhau là sử dụng lệnh echotc dựng sẵn:

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` 

Xem man 5 terminfo cho termcap mã và mã màu.

mdenter_bold_mode
meexit_attribute_mode
AFset_a_foreground
AB được set_a_background

Bằng cách này, để làm điều này trong Bash, sử dụng tiện ích tput và khả năng terminfo tên bên ngoài:

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) 
Các vấn đề liên quan