^q 옆에 stty를 어떻게 리바인드합니까?

^q 옆에 stty를 어떻게 리바인드합니까?

문자를 문자 그대로 입력할 수 있습니다.사용

tty 드라이버의 "lnext" 기능(보통 기본적으로 ^V)

그러나 터미널 에뮬레이터에서는 Ctrl+를 "붙여넣기"에 바인딩합니다 . (제어 흐름을 사용하지 않기 때문에) + 에 v다시 바인딩하고 싶습니다 . 나는 다음을 시도했다lnextCtrlq~/.zshrc

setopt noflowcontrol  # Don't use ^s and ^q for control flow
bindkey -r "^Q"       # Unbind ^q from push-line
stty lnext '^Q'       # Bind ^q to lnext

그러나 작동하지 않는 것 같습니다. + lnext에 다시 바인딩하는 방법이 있나요 ?Ctrlq

편집하다

추가 문제 해결을 수행했지만 다른 stty 키를 다시 바인딩할 수 없는 것 같습니다. 테스트를 위해 제거한 setopt noflowcontrol다음 stty start '^A'또는 stty start '^B'. 둘 다 아무런 효과가 없습니다. start여전히 Ctrl+ 에 바인딩되어 있습니다 q. (FWIW 나는 문자 그대로 ^A또는 앞의 ^B문자 자체를 시도했습니다.)lnext

답변1

stty lnext터미널 장치 라인 규칙 내부 편집기에만 영향을 미칩니다(이와 같은 애플리케이션을 실행할 때 cat자체 라인 편집기 없이 매우 제한된 편집기를 얻게 됩니다). zsh 편집기의 경우 자체 편집기에서 동일한 작업을 수행하기 위해 tty LD 설정을 쿼리하는 (줄 편집기와 달리) bindkey을 사용해야 zle합니다 .readlinebash

stty lnext '^Q' start '' -ixon # for tty LD editor
bindkey '^Q' quoted-insert     # for zle

각 터미널에 대해 이 부분을 수행 해야 하며 sttytty LD 설정이 기본값(예: 이후)으로 복원되면 다시 수행해야 합니다 stty sane.

일부 시스템에서는 HPUX 및 stty lnext '^Q' < /dev/ttyconf.

^Vzsh 줄 편집기의 커서에 X11 CLIPBOARD 선택 항목을 붙여넣습니다.

get-clipboard() {
  local clip
  clip=$(xclip -sel c -o 2> /dev/null && echo .) || return
  LBUFFER+=${clip%.}
}
zle -N get-clipboard
bindkey '^V' get-clipboard

관련 정보