키보드 단축키를 통해 터미널 재설정(Enter 키가 필요하지 않음)

키보드 단축키를 통해 터미널 재설정(Enter 키가 필요하지 않음)

이건 쉬울 거예요, 그렇죠?

예를 들어 zsh다음을 다음 항목에 넣을 수 있습니다 .zshrc.

reset_widget() tput reset
zle -N reset_widget
bindkey "^L" reset_widget

그러나 이렇게 하면 터미널이 재설정되지만 프롬프트를 다시 표시하려면 Enter를 눌러야 합니다.

명령을 다음으로 변경해 echo -ne '\n' | tput reset도 효과가 없습니다.

프롬프트를 표시하기 위해 나중에 Enter를 누르지 않고도 키보드 단축키를 사용하여 터미널을 재설정할 수 있는 방법이 있습니까?

답변1

xyr 터미널을 재설정하면 WINCH신호나 이와 유사한 신호가 생성되어 ZLE가 프롬프트를 다시 표시하기 때문에 thrig는 이를 볼 수 없습니다.

현재 입력 중인 터미널에서도 실행됩니다. 발행된 터미널 재설정 문자열에는 tput resetDECCOLM 제어 시퀀스가 ​​포함됩니다. 이렇게 하면 터미널이 100열 모드에서 재설정되어 80열 모드로 다시 설정됩니다. 처음에는 WINCH터미널 크기가 조정되었기 때문에 신호가 생성됩니다. 이것두번째주변 시간이 80개 열에서 80개 열로 변경되므로 문제가 발생하지 않습니다 WINCH. 그래서 터미널에서 thrig의 동작을 한 번만 볼 수 있습니다.

터미널에서는 이런 일이 발생하지 않고 위젯의 일부로 프롬프트를 다시 표시해야 한다고 ZLE에 알리는 것을 무시했기 때문에 이 내용이 표시되지 않습니다.

Reset_widget() { tput 재설정; 내장 zle .redisplay }

관련 정보