저는 Windows와 Mac을 자주 전환합니다. Windows에서는 cls를 사용하여 화면을 지울 수 있고, Mac에서는 command+k를 사용하여 동일한 작업을 수행할 수 있습니다. 나는 cls를 command+k에 바인딩하는 방법을 찾으려고 노력해 왔습니다. 이렇게 하면 콘솔에 cls를 입력하면 화면이 지워집니다. zsh를 사용하고 있습니다.
답변1
나는 당신이 터미널 세션에 대해 이야기하고 있다고 가정합니다. 프로그램이 clear
화면을 지웁니다. cls
실행하여 바인딩 할 수 있습니다 .
alias cls=clear
새 터미널에서 실행하려면 이 줄을 $HOME/.profile에 넣으세요.
답변2
화면을 지우고 프롬프트와 편집 버퍼를 다시 표시하는 zle(zsh 라인 편집기) 위젯이 있습니다 clear-screen
. 기본적으로 in 또는 와 같은 모드와 모드 모두 + 에 바인딩되어 있지만 다음 Ctrl을 사용하여 다른 키에 바인딩할 수 있습니다.Lemacs
vi
tcsh
bash
bindkey '^K' clear-screen
( emacs
모드 에서 Ctrl+는 K커서부터 줄 끝까지의 삭제 키인데, 제가 자주 사용하는 키바인딩입니다)
명령을 호출한 후 프롬프트를 다시 표시 clear-screen
하도록 위젯을 수동으로 구현 하려면 다음과 같은 사용자 정의 위젯을 생성할 수 있습니다.clear
myclear-screen() {
clear
zle redisplay
}
zle -N myclear-screen
+도 같은 방법으로 바인딩할 수 있습니다 Ctrl.Kbindkey '^K' myclear-screen
명령(화면을 지우는 명령) cls
에 대한 별칭을 만들 려면 다음을 수행해야 합니다.clear
alias cls=clear
또는 명령을 cls
호출 하는 함수를 정의할 수 있습니다.clear
cls() clear
또는:
cls() clear "$@"
호출 시 전달된 인수는 cls
있는 그대로 전달됩니다 clear
.
그런 다음 이를 zle 위젯으로 만들고 zle -N cls
키에 바인딩할 수도 있지만 호출하면 화면이 지워지지만 프롬프트와 편집 버퍼는 위젯과 같지 않고 clear-screen
자동으로 다시 표시됩니다.
clear
in에 대한 일부 내장 대체 기능은 zsh
다음과 같습니다.
echoti clear
(zsh/terminfo
일반적으로 기본적으로 로드되는 모듈에서 제공됩니다).echotc cl
(zsh/termcap
모듈에서 tcsh와 동일한 명령, tc는 termcap을 나타내고 ti는 터미널 기능에 대한 좀 더 현대적인 데이터베이스인 terminfo를 나타냅니다.)printf %s $terminfo[clear]
여기서 는 terminfo 터미널 기능 이름(예를 들어)을 로 식별된 터미널에 대한 해당 이스케이프 시퀀스에 매핑하는 연관 배열$terminfo
이기도 합니다 .zsh/terminfo
clear
$TERM
printf %s $termcap[cl]
: termcap과 동일합니다.시퀀스 하드코딩: 대부분의 "최신" 터미널에서 화면을 지우고 커서를 맨 위로 이동하는 이스케이프 시퀀스는
\e[H
(커서를 맨 위로 이동H
) 다음\e[J
(아래 커서 지우기)입니다.\e[2J
커서를 이동하지 않고 전체 화면을 지우고\e[3J
일부는 스크롤 버퍼를 지웁니다. 그래서:printf '\e[H\e[J\e[3J'
모든 것을 지울 것입니다.