
사용이 링크, 를 누르면 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'
읽다수동더 알아보기.