zle この行の最初の単語を読みますか?

zle この行の最初の単語を読みますか?

次のように言いましょう。

% ls ./ _

foo呼び出し時のカーソル_位置はどこですか?

foo(){
    echo $COMMAND
}
zle -N foo

実行される「コマンド」を書くことができるようにどのように設定しますCOMMANDか?foo&&

ベストアンサー1

さまざまな変数にアクセスできます。カスタムウィジェット特に、BUFFERその行を含むコンテンツ(またはより広範囲には複数行にすることができる完全なバッファ)。

最初の単語を抽出する方法は、BUFFER単語の定義によって異なります。この場合、おそらく最も有用な定義は、次の方法で実行できるシェル構文に基づいていることです。z パラメータ拡張フラグ

first_word=${${(z)BUFFER}[1]}

他の合理的な定義は、スペースで区切られた単語、または次の単語で構成されます。$WORDCHARS。持つ移動コマンドこれを行うには、文字列を手動で分割する方が簡単です。ただし、zle組み込み機能を使用して文字列を呼び出して移動を観察することもできます。CURSOR$BUFFER

完了ウィジェットには、完了するコマンドの単語が配置されます。words 範囲

おすすめ記事