Ctrl-y, puxando o conteúdo da área de transferência x para o terminal adiciona uma linha de prompt do shell

0

Usando este link , escrevi a função personalizada para tire o texto do x-clipboard para o terminal do shell pressionando C-y . Eu vejo dois problemas aqui,

copy_line_from_x_clipboard () {
    xsel -o
}

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

1) Adiciona uma string de prompt do shell, PS1, depois de pressionar C-y . Eu prefiro que essa função se comporte exatamente como Ctrl - Shift -v . Atualmente, produz,

CLIPBOARD_STUFF PS1$

2) Ele esvazia a área de transferência do sistema, depois de puxar o texto pela primeira vez. Segunda vez, eu pressiono C-y , nenhum conteúdo mais está sendo arrancado.

    
por Madhavan Kumar 06.08.2015 / 05:57

1 resposta

2

Você precisa atualizar $READLINE_LINE e $READLINE_POINT na função. Insira xsel -o output em $READLINE_POINT de $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'

Leia o manual para obter detalhes.

    
por 06.08.2015 / 06:33