Ctrl-y를 누르고 x 클립보드 내용을 터미널로 가져오면 쉘 프롬프트 문자열이 추가됩니다.

Ctrl-y를 누르고 x 클립보드 내용을 터미널로 가져오면 쉘 프롬프트 문자열이 추가됩니다.

사용이 링크, 를 누르면 x-클립보드에서 쉘 터미널로 텍스트를 가져오는 사용자 정의 함수를 작성했습니다 C-y. 여기에는 두 가지 문제가 있습니다.

copy_line_from_x_clipboard () {
    xsel -o
}

bind -x '"\C-y": copy_line_from_x_clipboard'

1) 를 누르고 쉘 프롬프트 문자열 PS1 을 추가합니다 C-y. 나는 이 함수의 동작을 선호합니다 Ctrl - Shift -v. 현재, 출력은 다음과 같습니다.

CLIPBOARD_STUFF PS1$

2) 처음으로 텍스트를 꺼내면 시스템 클립보드가 지워집니다. 두 번째로 를 눌렀을 때 C-y더 이상 내용이 나오지 않았습니다.

답변1

함수에서 및 를 업데이트해야 합니다 $READLINE_LINE. 모든 곳에 출력을 삽입하십시오 $READLINE_POINT.xsel -o$READLINE_POINT$READLINE_LINE

copy_line_from_x_clipboard() {
        local n=$READLINE_POINT
        local l=$READLINE_LINE
        local s=$(xsel -o)
        READLINE_LINE=${l:0:$n}$s${l:$n:$((${#l}-n))}
        READLINE_POINT=$((n+${#s}))
}

bind -x '"\C-y": copy_line_from_x_clipboard'

읽다수동더 알아보기.

관련 정보