次の LESS_TERMCAP 設定があります。
# less config
export LESS=-R
export LESS_TERMCAP_mb=$'\E[01;31m' # begin blinking
export LESS_TERMCAP_md=$'\E[01;31m' # begin bold
export LESS_TERMCAP_me=$'\E[0m' # end mode
export LESS_TERMCAP_se=$'\E[0m' # end standout-mode
export LESS_TERMCAP_so=$'\E[01;44;37m' # begin standout-mode
export LESS_TERMCAP_ue=$'\E[0m' # end underline
export LESS_TERMCAP_us=$'\E[01;33m' # begin underline
export LESSOPEN='| /usr/bin/highlight -O ansi %s 2>/dev/null'
~/.profile
観客が少なくなると、完全に混乱します。一方、 と入力すると~/.zshrc
機能zsh
します。なぜですか?
たとえば、非ログインシェル構成ファイルに環境変数を保存する方法を学んだので、~/.profile
これを実行したいと思いました。
追加情報:
tapyu@tapyu-ThinkPad-P73
OS: Ubuntu 20.04 focal
Kernel: x86_64 Linux 5.13.0-28-generic
Uptime: 2h 25m
Packages: 2559
Shell: zsh 5.8
Resolution: 2048x1152
DE: GNOME 3.36.5
WM: Mutter
WM Theme: Adwaita
GTK Theme: Yaru-dark [GTK2/3]
Icon Theme: Yaru
Font: Ubuntu 11
Disk: 123G / 217G (60%)
CPU: Intel Core i7-9750H @ 12x 4.5GHz [43.0°C]
GPU: Intel Corporation UHD Graphics 630 (Mobile)
NVIDIA Corporation GP107GLM [Quadro P620] (rev a1)
RAM: 4740MiB / 23681MiB
ありがとうございます。
答え1
変数の値を確認してくださいLESS_TERMCAP_xxx
。
print -lr ${(q)LESS_TERMCAP_mb}
(またはzshを使用していない場合echo "$LESS_TERMCAP_mb" | od -tx1c
:)
\$\\E\[01\;31m
Thomas Dickeyが推測したように、代わりに$'\033'\[01\;31m
($ \ E [
...代わりに033 [
...)が表示されることがあります。これは、構文(ダッシュなど)がわからないシェルから呼び出された場合に発生する可能性が.profile
あります$'…'
。/bin/sh
dashはUbuntuを含む多くの人気ディストリビューションで利用可能です。
1つの解決策は、エスケープ文字を表す別の方法を使用することです。これを使用してprintf
移植可能に作成できます。
esc=$(printf \\033)
export LESS_TERMCAP_mb="${esc}[01;31m" # begin blinking
…
または.zshrc
。その後、tput
エスケープシーケンスをハードコーディングする代わりに呼び出すことができます。 (LESS_TERMCAP_*変数のドキュメントはありますか?役に立つかもしれません。 )
または、以下を使用してこれらの変数を定義します。いくつかのキー、lessの設定ファイル()に書き込まれます~/.less
。常に同じ値に設定すると、環境に置くよりも意味があります。less
特別な構成です。しかし、以前のバージョンのlessでは機能しません。。