
clear
zsh シェルでターミナルの入力が空の場合にのみ、ダブルタブをコマンドにバインドしようとしています。
ここまでに私が達成したことは、常にダブルタブで削除することですが、可能であれば条件を追加し、.zshrc に以下を追加します。
bindkey -s '\t\t' 'clear^M'
おそらく、入力が空かどうかを確認するために、キーバインディングを使用してカスタム関数を呼び出す必要があるのでしょうか?
これを解決するアイデアはありますか?
ありがとう!
答え1
この動作は次のコードで実現できます:
if ! typeset -f magic-double-tab-cmd >/dev/null; then
function magic-double-tab-cmd {
echo 'clear'
}
fi
function magic-double-tab {
# Only run magic-double-tab commands when the command line is empty and
# when on the first line (PS1)
if ! (( $#BUFFER )) && [[ "$CONTEXT" == start ]]; then
BUFFER=$(magic-double-tab-cmd)
zle accept-line -w
fi
}
zle -N magic-double-tab
bindkey '\t\t' magic-double-tab
から抜粋マジックエンターリポジトリ。
これは、magic-enter プラグインが行うアプローチに似ていますが、代わりにタブを使用します。