Mac에서 별칭을 키보드 단축키에 바인딩하는 방법은 무엇입니까?

Mac에서 별칭을 키보드 단축키에 바인딩하는 방법은 무엇입니까?

저는 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을 사용하여 다른 키에 바인딩할 수 있습니다.Lemacsvitcshbash

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자동으로 다시 표시됩니다.

clearin에 대한 일부 내장 대체 기능은 zsh다음과 같습니다.

  • echoti clear( zsh/terminfo일반적으로 기본적으로 로드되는 모듈에서 제공됩니다).

  • echotc cl( zsh/termcap모듈에서 tcsh와 동일한 명령, tc는 termcap을 나타내고 ti는 터미널 기능에 대한 좀 더 현대적인 데이터베이스인 terminfo를 나타냅니다.)

  • printf %s $terminfo[clear]여기서 는 terminfo 터미널 기능 이름(예를 들어)을 로 식별된 터미널에 대한 해당 이스케이프 시퀀스에 매핑하는 연관 배열 $terminfo이기도 합니다 .zsh/terminfoclear$TERM

  • printf %s $termcap[cl]: termcap과 동일합니다.

  • 시퀀스 하드코딩: 대부분의 "최신" 터미널에서 화면을 지우고 커서를 맨 위로 이동하는 이스케이프 시퀀스는 \e[H(커서를 맨 위로 이동 H) 다음 \e[J(아래 커서 지우기)입니다. \e[2J커서를 이동하지 않고 전체 화면을 지우고 \e[3J일부는 스크롤 버퍼를 지웁니다. 그래서:

    printf '\e[H\e[J\e[3J'
    

    모든 것을 지울 것입니다.

관련 정보