パーソナライズされたカラーマニュアルページzshプラグインカラー

パーソナライズされたカラーマニュアルページzshプラグインカラー

ただインストールしました。カラーマニュアルページzshプラグイン。

うまくいきますが、下部のメッセージに見苦しい色が出力されます。

ここに画像の説明を入力してください。

すべてをオーバーライドせずにプラグインの色をパーソナライズする正しい方法は何ですか?色が直接設定されるプロセスのようです。プラグインの有効化

それとも私のシステムのバグなので、別の方法で修正できますか?実際に読み取れない基本的なカラー出力は奇妙に見えます。

私はUbuntu 18.10とgnome-terminalで動作しています。

答え1

マニュアルページ( )の形式ではgroff明示的な色の使用は許可されていませんが、視聴者が色を表示するために再解釈できる太字または下線などのいくつかのテキスト装飾を使用します。これはリンクプラグインが行うことなので、このプラグインを削除し、代わりに変数を介して.zshrc直接色を設定することをお勧めします(このプラグインと同様にpagerをLESS_TERMCAP使用すると仮定します)。lessman

説明を含む変数のリストは次のとおりです。

export LESS_TERMCAP_mb=$'\e[6m'          # begin blinking
export LESS_TERMCAP_md=$'\e[34m'         # begin bold
export LESS_TERMCAP_us=$'\e[4;32m'       # begin underline
export LESS_TERMCAP_so=$'\e[1;33;41m'    # begin standout-mode - info box
export LESS_TERMCAP_me=$'\e[m'           # end mode
export LESS_TERMCAP_ue=$'\e[m'           # end underline
export LESS_TERMCAP_se=$'\e[m'           # end standout-mode

カラーコードのリストは、次のスクリプトを使用して見つけることができます。

#!/bin/bash

echo "PALETTE OF 8 COLORS (bold, high intensity, normal, faint)"
for i in {30..37}; do printf "\e[1;${i}m1;%-2s      \e[m" "$i"; done; echo
for i in {90..97}; do printf "\e[${i}m%+4s      \e[m" "$i"; done; echo
for i in {30..37}; do printf "\e[${i}m%+4s      \e[m" "$i"; done; echo
for i in {30..37}; do printf "\e[2;${i}m2;%-2s      \e[m" "$i"; done;

echo -e "\n\n\nPALETTE OF 256 COLORS (only normal)"
j=8
for i in {0..255}; do
    [[ $i = 16 ]] && j=6
    [[ $i = 232 ]] && j=8
    printf "\e[38;5;${i}m38;5;%-4s\e[m" "${i}"
    (( i>15 && i<232 )) && printf "\e[52C\e[1;38;5;${i}m1;38;5;%-4s\e[52C\e[m\e[2;38;5;${i}m2;38;5;%-4s\e[m\e[126D" "${i}" "${i}"
    [[ $(( $(( $i - 15 )) % $j )) = 0 ]] && echo
    [[ $(( $(( $i - 15 )) % $(( $j * 6 )) )) = 0 ]] && echo
done
exit 0

答え2

与えられた解決策は非常にエレガントです。 Oh My ZSH公式wikiを願っています。 ohmyzsh/プラグイン/colormanpages/配列にはカラーリストやアイテムはありませんless_termcap。以下は、小さな例を挙げるための##Customizationの内容です。

プラグインは、less_termcaptermcap機能をポケットベルエスケープシーケンスにマッピングするグローバル連想配列を宣言しますless。プラグインがロードされると、ユーザーはこのマッピングをさらにカスタマイズできます。詳しくはソースを確認してください。

たとえば、エスケープシーケンスless_termcap[md]にマッピングして太字で印刷する方法を教えてください。現在太字の赤色で表示されていますが、変更するにはOMZをインポートしてzshrcファイルで再定義するだけです。LESS_TERMCAP_mdlessless_termcap[md]

less_termcap[md]="${fg_bold[blue]}" # this tells less to print bold text in bold blue

これらすべてを持ってもっと試してみることができると思います。用語キャップ

# mb       start blink
# md       start bold
# me       turn off bold, blink and underline
# so       start standout (reverse video)
# se       stop standout
# us       start underline
# ue       stop underline


ノート

しかし、試してミスするのに時間を無駄にしたくない場合は、1行で十分です。

関連情報