c-<cr>
zsh에서 포인트에 삽입을 어떻게 바인딩(가령)합니까 ?&>/dev/null &<cr>
urxvt를 사용하고 있습니다.
답변1
Ctrl두 단계가 있습니다. 터미널 에뮬레이터에서 +에 대해 다른 이스케이프 시퀀스를 내보내 도록 해야 하며 Return해당 이스케이프 시퀀스를 입력할 때 수행할 작업을 zsh에 알려야 합니다.
터미널의 응용 프로그램은 일련의 바이트를 수신하며, 그 중 대부분은 인쇄 가능한 문자 또는제어 문자. 대부분의 기능 키와 키 코드는 이스케이프 문자와 누른 키를 인코딩하는 여러 문자로 구성된 이스케이프 시퀀스로 인코딩되어야 합니다. 바라보다키보드 입력과 텍스트 출력은 어떻게 작동합니까?배경에 대해 자세히 알아보세요. Ctrl+ 표준 이스케이프 시퀀스가 없습니다 Return. 대부분의 터미널((U)rxvt 포함)은 일반처럼 CR 문자를 보냅니다 Return. 따라서 Urxvt에 다른 이스케이프 시퀀스를 보내도록 지시해야 합니다. X 리소스 파일( ~/.Xresources
-- 를 사용하여 로드 xrdb -merge ~/.Xresources
)에 다음을 추가합니다.
URxvt.keysym.C-Return: \033[27;5;13~
zsh에서 사용자 정의 코드를 키에 바인딩하려면 코드를 함수에 작성하고 함수를 zle 위젯으로 선언합니다.zle -N
. 너 안에사용자 정의 위젯,변하기 쉬운BUFFER
편집 중인 줄의 내용을 포함합니다.CURSOR
커서 위치를 포함합니다. 커서 주위에 텍스트를 삽입하려면 더 편리한 변수가 있습니다.LBUFFER
커서 앞에 삽입하거나 앞에 텍스트를 추가하세요.RBUFFER
커서 뒤에 삽입하세요.
내 생각에 당신이 원하는 것은 줄 끝에 텍스트를 추가하고 현재 명령을 실행하는 것입니다. 현재 명령 실행은 CR 문자를 삽입하여 수행되지 않습니다. 이는 단순히 명령에 CR을 삽입하는 것입니다. 통화 위젯accept-line
(기본값은 CR에 바인딩됨) 명령을 실행합니다.
accept-line-run-in-background-with-output-hidden () {
BUFFER+=" &>/dev/null &"
zle accept-line
}
zle -N accept-line-run-in-background-with-output-hidden
bindkey $'\033[27;5;13~' accept-line-run-in-background-with-output-hidden