デフォルトのように単純にスクロールするのではなく、実際に画面をクリアするコマンドがあります。これは、でclear
にエイリアスされています。c
.zshrc
alias c='clear && printf "\e[3J";'
私の質問は、このコマンドを zsh コマンド履歴から遠ざけて、上矢印キーで上にスクロールしたときに表示されないようにするにはどうすればよいかということです。
答え1
ではset -o histignorespace
、SPC 文字で始まるコマンド ラインは履歴に挿入されません (ただし、直前に入力したコマンドはいつでも呼び出すことができます)。
それで、あなたがそれを作ったら:
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
これは、たとえばではなく、入力した場合にのみ機能することに注意してください。次のように PS2 プロンプトで をc; something-else
押した場合にも機能します。Enter
for i do
c
答え2
bash では、HISTIGNORE='c' doesn't store a command line of a single
c to the memory list of commands. The similarly named
HISTORY_IGNORE in zsh is used to avoid sending the command to the history **file**, which is something different. A
HIST_NO_STORE` が zsh にも存在しますが、エイリアスでは失敗するようです。
c
したがって、履歴上のエイリアスを回避する解決策はないようです。
clear
ただし、現在のウィンドウをクリアする ( ) ことと、スクロールバックを削除する ( )ことは、printf "\e[3J"
別の ANSI 制御シーケンスを使用して実行することもできます。
ESC c # Full Reset (RIS), VT100.
つまり、
printf '\ec'
十分なはずです。
そのためのキーボード ショートカットを定義するのは簡単で、履歴にコマンドが保存されることを回避できます。
答え3
Method1:
Just Put one blank space before entering any command it wont be recorded in history
Method2:
set +o history (After this No command will be recorded in history)
set -o history(After this again command will be recorded in history)