できる限り多くの情報を提供する非常にシンプルな (1 文字の) プロンプトを作成しようとしています。これが私が現時点で持っているものです(何年も前から持っていたので、オリジナルをどこで見つけたか思い出せません):
# RPS1="['%1v', '%2v', '%3v', '%4v', '%5v', '%6v', '%7v', '%8v', '%9v']" # debug
PS1=" %(?|%2F|%1F)%1(V|%1v|%(#|#|:))%(?|%2f|%1f) "
function zle-line-init {
zle -K vicmd
}
zle -N zle-line-init
function zle-keymap-select {
psvar[1]="${${KEYMAP/(main|viins)/>}/vicmd/}"
zle reset-prompt
psvar[1]=""
}
zle -N zle-keymap-select
これはかなり単純です。レンダリング時にプロンプトをコマンド モードに初期化:
し、vi の「コマンド」モードのときはプロンプトを表示し、vi の「挿入」モードのときは>
(を変更して) プロンプトを表示します。psvar[1]
また、root として行動している場合:
は に置き換えられ、文字の色は最後のコマンドの終了ステータスを示します。#
私の問題:
キーマップが変更されると (つまり、例として「コマンド」モードと「挿入」モードを切り替えてからa
エスケープ キーを押すと、$?
終了ステータスが成功0
ステータスで上書きされ、プロンプトが表示されます。赤ではなく緑で (前のコマンドが失敗した場合でも) の%(?|…|…)
部分がシェルに送信され$PS1
た最後のコマンドの終了ステータスを適切に表示するように、プロンプトを保存または設定するにはどうすればよいですか?