With Bash CtrlL will clear the screen but not scrollback buffer. In the past I have worked around this by using:
tput reset
However I have noticed that this command will not clear the scrollback buffer with Zsh. So, how is it done?
With Bash CtrlL will clear the screen but not scrollback buffer. In the past I have worked around this by using:
tput reset
However I have noticed that this command will not clear the scrollback buffer with Zsh. So, how is it done?
function clear-scrollback-buffer {
# Behavior of clear:
# 1. clear scrollback if E3 cap is supported (terminal, platform specific)
# 2. then clear visible screen
# For some terminal 'e[3J' need to be sent explicitly to clear scrollback
clear && printf '\e[3J'
# .reset-prompt: bypass the zsh-syntax-highlighting wrapper
# https://github.com/sorin-ionescu/prezto/issues/1026
# https://github.com/zsh-users/zsh-autosuggestions/issues/107#issuecomment-183824034
# -R: redisplay the prompt to avoid old prompts being eaten up
# https://github.com/Powerlevel9k/powerlevel9k/pull/1176#discussion_r299303453
zle && zle .reset-prompt && zle -R
}
zle -N clear-scrollback-buffer
bindkey '^L' clear-scrollback-buffer
clear
and zle .reset-prompt && zle -R
are added to make sure it works for multiline prompts, which is important.
References
tput
(though the bash style tends to be hard-coded escape sequences). Perhaps theTERM
(and corresponding reset differ: some use the hard-reset, some don't). – Thomas Dickey May 03 '19 at 23:13.profile
, or in your terminal configuration, or anywhere else), change the value of theTERM
environment variable? – Gilles 'SO- stop being evil' May 04 '19 at 23:21