Shell
使特定命令遠離 shell 歷史記錄
我有一個命令實際上清除螢幕而不是簡單地滾動,就像預設的一樣,在我的
clear
別名為:c``.zshrc
alias c='clear && printf "\e[3J";'
我的問題是:我怎樣才能讓這個命令遠離我的 zsh 命令歷史記錄,這樣當我用向上箭頭鍵向上滾動時我看不到它?
使用
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
,而不是c; something-else
例如。Enter
如果您在 PS2 提示符下按下它也會這樣做:for i do c