プロンプトにPythonスクリプトの出力を追加したいのですが、zsh
方法がわかりません。
これは、マニュアルページで「PROMPT EXPANSION」と呼ぶことによって行われますか?
誰かが私を正しい道に導いてください。つまり、Googleで見つけることができない便利なリンクを投稿してください。
ベストアンサー1
2つの主な方法があります。
- パラメータ拡張を有効にする
PROMPT_SUBST
psvar
ソート
1. プロンプトのパラメータ拡張
PROMPT_SUBST
有効な場合
setopt PROMPT_SUBST
プロンプトは、評価される前にパラメータ拡張、コマンド置換、および算術拡張を経ます。
これにより、埋め込みスクリプトの出力をコマンドに置き換えることができます。たとえば、
PROMPT='Look at this: $(python yourscript.py) >'
出力にエスケープシーケンス(%~
、%M
など%F{red}
)が含まれている場合は、プロンプトが印刷される前に評価されます。
2. psvar配列
配列の最初の9つの値のいずれかをpsvar
スクリプトの出力として設定できます。その後、1から9%Xv
までX
の数字を使用して呼び出すことができます(X
省略した場合、デフォルトは1です)。
psvar[5]=$(python yourscript.py)
PROMPT='Look at this: %5v >'
各印刷プロンプトの前に値を更新するには、precmd
フック機能を設定する必要があります。
precmd() {
psvar[5]=$(python yourscript.py)
}
すでに機能がある場合、またはprecmd
複数の機能を使用したい場合は、活用することをお勧めしますadd-zsh-hook
。
# load add-zsh-hook, need to be done only once
autoload -Uz add-zsh-hook
pyscript() {
psvar[5]=$(python yourscript.py)
}
add-zsh-hook precmd pyscript
pycript
これにより、プロンプトを印刷する前に実行する必要がある機能のリストに追加されます。