Como faço para compartilhar o buffer de colar do mouse (não a área de transferência) entre o bash e o X11 * sem * usando o set-mark?

2

Existe uma resposta relacionada (link abaixo), mas isso requer definição. Ctrl + U funciona de forma diferente. \Cu ou \C-u não pode ser substituído apenas pelo \eW (código abaixo).

Veja o que Compartilhe a área de transferência entre o bash e o X11 sugere.

if [[ -n $DISPLAY ]]; then
  copy_line_to_x_clipboard () {
    printf %s "$READLINE_LINE" | xsel -ib
  }
  bind -x '"\eW": copy_line_to_x_clipboard'
fi

Então a questão é: como eu faço Ctrl + U no bash adicionar texto que ele corta no buffer de colar do mouse do Xorg (clique do meio)?

    
por argle 11.02.2018 / 13:52

1 resposta

1

Sua função copia a linha para a área de transferência.

Para usar o buffer de colar do mouse em vez da área de transferência Ctrl + C / Ctrl + V, execute xsel sem a opção -b .

Para cortar em vez de copiar, exclua o texto depois: defina READLINE_LINE como uma string vazia.

O Bash fornece configurações de terminal definidas por stty precedence sobre suas próprias associações de teclas. Eu acho que a intenção é principalmente para obedecer as configurações do terminal para se o BackSpace envia ^H ou ^? , mas geralmente significa os atalhos de teclado do bash para todos os caracteres listados por stty -a (ou seja, ^C , ^D , ^H , ^Q , ^S , ^W , ^Z , ^\ e ^? ) não são usados por padrão. Você precisa cancelar a configuração stty do caractere de controle que deseja reativar.

Isso funciona para mim com o seguinte código em ~/.bashrc com bash 4.3 no Ubuntu 16.04.

if [[ -n $DISPLAY ]]; then
  stty kill ''
  copy_line_to_x_clipboard() {
    printf %s "$READLINE_LINE" | xsel -i;
    READLINE_LINE= READLINE_POINT=0
  };
  bind -x '"\C-u": copy_line_to_x_clipboard';
fi

Não funciona se eu colar apenas na linha de comando: recebo o efeito mencionado em um comentário, ou seja, pressionar ^U insere um literal ^U . Ele funciona se eu executar stty kill '' e, em seguida, bind -x … em um comando subsequente.

    
por 11.02.2018 / 23:12