zshプロンプトにスクリプト出力を含める方法

zshプロンプトにスクリプト出力を含める方法

プロンプトにPythonスクリプトの出力を追加したいのですが、zsh方法がわかりません。

これは、マニュアルページで「PROMPT EXPANSION」と呼ぶことによって行われますか?

誰かが私を正しい道に導いてください。つまり、Googleで見つけることができない便利なリンクを投稿してください。

ベストアンサー1

2つの主な方法があります。

  1. パラメータ拡張を有効にするPROMPT_SUBST
  2. 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これにより、プロンプトを印刷する前に実行する必要がある機能のリストに追加されます。

おすすめ記事