这应该很容易,对吧?
例如zsh
,您可以将其放入您的.zshrc
:
reset_widget() tput reset
zle -N reset_widget
bindkey "^L" reset_widget
但是,这会重置终端,但需要您按 Enter 键才能重新显示提示。
将命令更改为echo -ne '\n' | tput reset
也没有效果。
有没有办法使用键盘快捷键重置终端,而不必随后按 Enter 键来显示提示?
答案1
thrig 没有看到这一点,因为重置 xyr 终端的行为会产生WINCH
信号或类似信号,这会导致 ZLE 重新显示提示。
它也在我当前正在输入的终端上执行。由 发出的终端复位字符串tput reset
包括 DECCOLM 控制序列。这会将终端从我设置的 100 列模式重置回 80 列模式。第一次,这确实会产生WINCH
信号,因为终端的大小发生了调整。这第二周围的时间从 80 列更改为 80 列,这不会导致WINCH
.所以我只在我的终端上看到一次 thrig 的行为。
您没有看到这一点是因为您的终端不会发生这种情况,并且您忽略了告诉 ZLE 它需要重新显示提示作为小部件的一部分:
reset_widget() { tput 重置;内置 zle .redisplay; }