답변1
저는 screen
전문가가 아니므로 더 나은 솔루션이 있을 수 있지만, 귀하에게는 이것으로 충분할 수 있습니다. 명령 slowpaste
으로만 작동 paste
하지만 xsel
현재 X11 선택을 파일에 복사한 다음 화면 readreg
명령을 사용하여 해당 파일을 레지스터로 읽는 데 사용할 수 있습니다. 마지막으로 paste
레지스터의 내용을 붙여넣을 수 있습니다. 다음은 ~/.screenrc
나에게 효과적이었습니다.
defslowpaste 100
bindkey ^v exec sh -c 'xsel -o >/tmp/sel; screen -X eval "readreg p /tmp/sel" "paste p"'
현재 창이 아직 없기 때문에 이 시작 파일에서는 밀리초 단위로 문자당 지연을 사용하는 것이 slowpaste
작동하지 않는 것 같지만 기본값을 설정하면 defslowpaste
제대로 작동합니다.
그러면 control-v2개의 명령이 포함된 쉘 스크립트에 키가 바인딩됩니다. 첫 번째 실행에서는 xsel -o
X11 선택 항목을 파일에 넣습니다 /tmp/sel
. 두 번째는 2개의 내장 명령을 사용하여 화면을 호출합니다. readreg
파일을 레지스터로 읽고 100밀리초 지연으로 문자를 표시 p
합니다 .paste
이는 Stéphane Chazelas의 정보를 사용합니다.답변즉시 반환 과 관련하여 다른 명령과 연결할 exec
수 없습니다 eval
. 대답은 exec
예를 들어 ...
이제 xsel
a로 대체 cat
하고 파일이 끝날 때까지 사용자 입력을 읽을 수 있는 기본 "fdpat"를 사용하는 방법을 설명합니다 control-D.
답변2
일반적인 TX 레이턴시는 없는 것 같습니다. 그러나 다음 명령을 사용하여 텍스트를 붙여넣기 위한 설정이 있습니다 paste
.screen
slowpaste
명령: SlowPaste 밀리초
명령: defslowpaste 밀리초
(아무것도 아님)
붙여넣기 명령을 통해 현재 창에 텍스트를 삽입하는 속도를 정의합니다. Slowpaste 값이 0이 아닌 경우 텍스트는 문자 단위로 기록됩니다. 각 쓰기 후에는 애플리케이션이 입력을 처리할 수 있도록 화면이 밀리초 동안 일시 중지됩니다. 많은 양의 텍스트를 붙여넣을 때 기본 시스템에서 흐름 제어 문제가 노출되는 경우에만 Slowpaste를 사용하세요. defslowpaste는 새 창의 기본값을 지정합니다.
원천:https://www.gnu.org/software/screen/manual/screen.html
.screenrc
stdin의 입력에 대해 "느린 붙여넣기 모드"를 얻으려면 파일에 다음 줄을 추가할 수 있습니다 .
bindkey ^V exec ... sh -c 'cat >"$HOME/.screen-slowpaste.tmp" && screen -S "$STY" -X eval "slowpaste 1" "readreg p \"$HOME/.screen-slowpaste.tmp\"" "paste p"'
이는 stdin의 입력을 수신하는 새 키 바인딩을 등록하고( CTRLVEOF 전송 을 통해 수행됨) 이를 . 이 예에서는 지연이 1밀리초로 설정되었습니다 .cat
CTRLD$HOME/.screen-slowpaste.tmp
readreg
slowpaste 1
SCREENSLOWPASTE="$(cat </dev/stdin)"
입력을 환경 변수로 저장하고 레지스터에 복사하여 임시 파일을 건너뛸 수도 있습니다 register p "$SCREENSLOWPASTE"
. 그러나 이 변형은 붙여넣을 수 있는 텍스트의 양이 매우 제한되어 있어 "명령이 너무 깁니다"라는 오류가 금방 발생합니다.