回答:
赤いプロンプトを設定する方法の例を次に示します。
PS1=$'\e[0;31m$ \e[0m'
魔法は\e[0;31m
(赤い前景を\e[0m
オンにする)と(キャラクターの属性をオフにする)です。これらはエスケープシーケンスと呼ばれます。エスケープシーケンスが異なると、絶対的なカーソルの配置、色、ウィンドウのタイトルバーの変更など、さまざまな結果が得られます。
エスケープシーケンスの詳細については、ANSIエスケープコードに関するウィキペディアのエントリを参照してください。
これを入れてください~/.zshrc
:
autoload -U colors && colors
PS1="%{$fg[red]%}%n%{$reset_color%}@%{$fg[blue]%}%m %{$fg[yellow]%}%~ %{$reset_color%}%% "
サポートされている色:
red
、blue
、green
、cyan
、yellow
、magenta
、black
、& white
(からこの回答)別のコンピュータは、異なる有効なオプションを持っているかもしれません。
カラーコード(およびその他の印刷不可能な文字)をで囲み%{....%}
ます。これは、テキストの折り返しが正しく機能するためのものです。
さらに、これは、これをここからディレクトリトリミングで動作させる方法です。
PS1="%{$fg[red]%}%n%{$reset_color%}@%{$fg[blue]%}%m %{$fg[yellow]%}%(5~|%-1~/.../%3~|%4~) %{$reset_color%}%% "
zsh: colors: function definition file not found
%{...%}
は、コンテンツがリテラルエスケープシーケンスとして解釈されるため、シーケンスの印刷中にカーソルが移動しないことを意味します。これを使用しないと、カラーコードによって実際にカーソルが移動し、望ましくない効果が生じる可能性があります。これはVisual Effects
、zshmisc manページの
私はautoload -U colors && colors
もうこれが必要だとは思わず、簡単に行うことができます:
PS1="%{%F{red}%}%n%{%f%}@%{%F{blue}%}%m %{%F{yellow}%}%~ %{$%f%}%% "
FireDudeの回答と同じ結果を達成します。詳細については、ZSHのドキュメントを参照してください。
autoload -U colors && colors
autoload
上で作業する可能性が高くなります。
autoload on
?
autoload -U colors
、ディストリビューションが他のzsh初期化ファイルにすでにそれを持っていることを意味します。他の人と共有するつもりのスクリプトには、それを含める必要があります。
for i in {1..256}; do print -P "%F{$i}Color : $i"; done;
%F{118}
(1から256)$FG[018]
(1から256)$fg[magenta]
(マゼンタ、赤、白、黄、黒、青、シアン、緑)PS1='%(?.%F{green}.%F{green})%n@%m:%~%# %f'
PS1='%{$fg[gray]%}[%T][%n@%m%{$reset_color%}:%c%{$reset_color%}%{$fg[gray]%}$(git_prompt_info)]$(prompt_char)%{$reset_color%} '
変数定義(PS1 / PROMPT)を追加する必要があります ~/.zshrc
現在のプロンプトでPS1変数を再定義して、すぐにテストすることもできます(変更は保存されません)。
上記のBryan Oakleyの回答にはすでに指摘されている問題があり、Andrew Marshallが提供する解決策には問題がありませんが、使用されている色のカスタマイズが多すぎることは明らかではありません。
macOS Catalinaは今後zshをデフォルトのシェルにするように要求するので、さらに多くの人々がプロンプトをカスタマイズしたいと思うかもしれませんし、答えのためにここに来るかもしれません。したがって、私はより広い要約を提供し、より多くのカスタマイズを可能にする他の非常に密接に関連する概念に触れようとするつもりだと思いました。
さまざまな色の3桁のコード。 まず、さまざまな色の3桁のコードをここで確認できます:https : //unix.stackexchange.com/a/124409/194343。たとえば、214はある種のオレンジ色です。
前景と背景。 他の重要な情報は、F oregroundとbac Kの地色の場合、FとKでそれぞれ何が必要かを定義できるということです。ソースは視覚効果に関するzshマニュアルです:http : //zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html#Visual-effects
したがって、たとえば、次の2つのコマンド
autoload -U colors && colors
export PS1="%F{214}%K{000}%m%F{015}%K{000}:%F{039}%K{000}%~%F{015}%K{000}\$ "
ホスト名をオレンジ色に黒の背景で表示し、コロンを白で黒の背景で表示し、現在の作業ディレクトリを明るい青で黒の背景で表示し、ドル記号を白で黒の背景で表示します。
関連情報は以下にあります。
右側のプロンプト情報。たとえば、タイムスタンプを追加します。https://superuser.com/a/1251045/290299を参照してください。もちろん、これは色分けできます。たとえば、次のように、水色/紫がかった色を使用できます。
RPROMPT="%F{111}%K{000}[%D{%f/%m/%y}|%@]"
の色ls
。lsのマニュアルを読んだ後、たとえばls
、次の2つのコマンドを使用して色をアクティブにすることができます。
export CLICOLOR=1
export LSCOLORS=gafacadabaegedabagacad
最後に、自分の構成に満足しているためテストしなかった最後のコメントとして、別の方法として、誰かがMacPortscoreutils
からポートをインストールして使用することができます(ソース:https : //unix.stackexchange.com/a/174596 / 194343)。(上記はすべて、日常生活をより楽しく、扱いやすくするための関連部分であるため、この最後の部分を編集する可能性があります。)gdircolors
zsh5(Debian Jessieのデフォルト)では、これらのすべてのソリューションが機能することがわかりました。
$'\e[00m
$fg[white]
$fg{white}
今、彼らは問題を抱えています:彼らはカーソルを動かし、(自動補完のために)タブを打つときに醜いデカールをもたらします。解決策は、エスケープシーケンスを単にで囲むこと%{FOOBAR%}
です。これを理解するのにしばらくかかりました。2番目と3番目のソリューションでは、ロードcolors
モジュールが必須です。最初のソリューションを読みやすくするには、使用する色の変数を定義するだけです。
最後のコマンドの終了ステータスに応じた色のプロンプトを表示するには、次のように使用できます。
PS1='%(?.%F{green}.%F{red})%n@%m:%~%# %f'
この行をに追加するだけ~/.zshrc
です。
ドキュメントには、可能なプレースホルダを示しています。
zshallを実行してPROMPT EXPANSIONを検索します
ここで既存の回答を読んだ後、それらのいくつかは矛盾しています。私はzsh 4.2と5+を実行しているシステムでさまざまなアプローチを試してみましたが、これらの回答が競合する理由は、対象となるZSHのバージョンが示されていないためです。異なるバージョンではこれに異なる構文を使用し、それらのいくつかはさまざまなオートロードを必要とします。
したがって、最善の策は、zshallを実行し、PROMPT EXPANSIONを検索して、zshの特定のインストールに関するすべてのルールを見つけることです。コメントで、「Ubuntu 11.04、10.4、またはOSXを使用している」などは、使用しているZSHのバージョンが不明であるため、あまり意味がありません。Ubuntu 11.04は、ubuntu 10.04より新しいバージョンのZSHを意味しません。古いバージョンがインストールされた理由はいくつかあります。さらに言えば、新しいバージョンのZSHは、どのバージョンのZSHであるかを知らなくても、どの構文を使用すべきかを示唆するものではありません。
上記のすべての回答を補足するもう1つの便利なトリックは、カラープロンプト設定をzsh関数に配置することです。そこで、ローカル変数をrc=$reset_color
定義して、長いコマンドのエイリアスを作成したり、独自のカラー変数を定義したりできます。それを.zshrc
ファイルに配置して、定義した関数を呼び出すことを忘れないでください。
# Coloured prompt
autoload -U colors && colors
function myprompt {
local rc=$reset_color
export PS1="%F{cyan}%n%{$rc%}@%F{green}%m%{$rc%}:%F{magenta}%~%{$rc%}%# "
}
myprompt