シェル履歴で特定のコマンドを保持します。

シェル履歴で特定のコマンドを保持します。

メイン画面のように単にスクロールするのではなく、実際に画面を消去するコマンドがあります。私のclearエイリアスは次のとおりです。c.zshrc

alias c='clear && printf "\e[3J";'

私の質問は:上矢印キーを使用して上にスクロールしたときにこのコマンドが表示されないように、zshコマンド履歴でこのコマンドをどのように維持しますか?

ベストアンサー1

を使用すると、set -o histignorespaceSPC文字で始まるコマンドラインは履歴に挿入されません(以前に入力したコマンドはいつでも呼び出すことができます)。

その場合は、次のようにしてください。

set -o histignorespace
alias c=' printf "\e[H\e[3J"'

最初のコマンドがあるコマンドラインを入力すると、コマンドラインはc履歴に追加されません。

accept-line別のアプローチは、ウィジェットに次の項目のみが含まれている場合は、画面と編集バッファを消去するようにウィジェットをオーバーライドすることですc

accept-line() case $BUFFER in
  (c) printf '\e[H\e[3J'; BUFFER=; zle redisplay;;
  (*) zle .accept-line
esac
zle -N accept-line

入力した場合にのみ機能し、cそれがc; something-elseすべてです。 PS2プロンプトで次のように押すと、Enterこれが行われます。

for i do
c

おすすめ記事