Ctrl-y,将 x 剪贴板内容拉入终端会添加 shell 提示字符串

Ctrl-y,将 x 剪贴板内容拉入终端会添加 shell 提示字符串

使用这个链接,我编写了自定义函数,以便在按下 时将文本从 x-剪贴板拉到 shell 终端C-y。我在这里看到两个问题,

copy_line_from_x_clipboard () {
    xsel -o
}

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

1) 按 后添加 shell 提示字符串 PS1 C-y。我更喜欢这个函数的行为与Ctrl - Shift -v.目前,它输出,

CLIPBOARD_STUFF PS1$

2) 第一次拉出文本后,它会清空系统剪贴板。第二次,我按C-y,没有更多内容被拉出。

答案1

您需要更新函数中的$READLINE_LINEand 。将输出$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'

手册了解详情。

相关内容