ターミナルのbashプロンプトをzshに変換する

ターミナルのbashプロンプトをzshに変換する

最近zshを使用するように端末を更新しましたが、それを行った後、新しい端末ウィンドウに以前に設定したカスタムプロンプトの\[\033[1;92m\]\h:\[\033[0m\] \[\033[0;34m\][\W]\[\033[0m\] \[\033[0;31m\]\u$\[\033[0m\]代わりに、次のプロンプトが表示されます。

bash設定ファイルを更新して端末にカスタムプロンプトを再表示するか、zshベースの設定ファイルを使用して目的のデバイス名、パスなどを表示するようにデフォルトの端末プロンプトをクリーンアップする方法についての提案はありますか?

答え1

プロンプトエスケープシーケンスが異なります。強く打つそして扱いにくい。機能は似ていますが、構文はまったく異なります。 Bash設定をzsh構文に変換する必要があります。

PS1どちらの場合も、プロンプトは変数に移動します。 (他の可能性もありますが、必ずしも使用する必要はありません。)を入力するように設定します.zshrc。したがって、次の行を追加する必要があります.zshrc

PS1=$'%{\e[1;92m%}%m:…'

翻訳を始めました。 bashの\[…\]幅が0の構造はzshの構造になり、%{…%}bashに表示されるエスケープ文字はzshにあり、ホスト名はbashとzshの両方にありました...\033$'\e'\h%m

答え2

\e[92m16以上のANSI色をサポートする端末で、前景色を色10(薄緑色)に設定するシーケンスです。これは、echoti setaf 10その端末を参照すると(terminfo)または(termcap)(またはシステムによって)によって送信されるシーケンスです。echotc AF 10tput setaf 10tput AF 10$TERM

\e[1m勇敢な

zsh急速な拡張の中で、

  • %B回って勇敢なオン、%bオフにします。
  • %10F%F{#00ff00}RGB仕様(zmodload zsh/nearcolorサポートされている端末の場合はパレットから最も近い色を取得するために使用できます)の場合は、前景色を10に設定し、サポートされていない端末の場合はデフォルトの前%f景色にリセットします。%F{blue}基本的な8つのサブカラー(\e[3xm)で機能します。
  • \h、に対応するbashはtcshと同様に、、でなければなりませ\Wん。\u%m%~%n

したがって、bashと同じです。

\[\033[1;92m\]\h:\[\033[0m\] \[\033[0;34m\][\W]\[\033[0m\] \[\033[0;31m\]\u$\[\033[0m\]

次のようにする必要があります。

%10F%B%m: %b%4F[%~] %1F%n$ %f

答え3

混乱したバックスラッシュをあまり使用せずにプロンプ​​トを設定するより簡単な方法は、コマンドをZsh使用することです。tputたとえば、プロンプト文字列を太字に設定し、前景色を黄色に設定する方法は次のとおりです。

promptText="megh$ "
PS1="%{$(tput bold)$(tput setaf 3)%}$promptText%{$(tput sgr0)%}"

印刷できない文字をエスケープするには、その文字を%{ ... %}Zshに入れる必要があります。 Bashの場合は、内部に入れるか、\[ ... \]代わりに入れてください\001 ... \002

追加の説明ここ

関連情報