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
printf "\ec\e[3J"
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)..profile, or in your terminal configuration, or anywhere else), change the value of theTERMenvironment variable?