Existe uma resposta relacionada (link abaixo), mas isso requer set-mark. Ctrl+ Ufunciona de forma diferente. \Cu
ou \C-u
não pode apenas ser substituído pelo \eW
(código abaixo).
Aqui está o que sugere Compartilhar a área de transferência entre o bash e o X11 .
if [[ -n $DISPLAY ]]; then
copy_line_to_x_clipboard () {
printf %s "$READLINE_LINE" | xsel -ib
}
bind -x '"\eW": copy_line_to_x_clipboard'
fi
Portanto, a pergunta é: como faço Ctrl+ Uno bash adicionar texto que corta para o buffer de colagem do mouse do Xorg (clique com o botão do meio)?
Sua função copia a linha para a área de transferência.
Para usar o buffer de colagem do mouse em vez da área de transferência Ctrl+C/Ctrl+V, execute
xsel
sem a-b
opção.Para recortar em vez de copiar, exclua o texto depois: defina
READLINE_LINE
uma string vazia.O Bash fornece configurações de terminal definidas por
stty
precedência sobre suas próprias combinações de teclas. Acho que a intenção é principalmente obedecer às configurações do terminal para saber se o BackSpace envia^H
ou^?
, mas, de maneira mais geral, significa que as combinações de teclas do bash para todos os caracteres listados porstty -a
(ou seja^C
,^D
,^H
,^Q
,^S
,^W
,^Z
,^\
e^?
) não são usadas por padrão. Você precisa desativar a configuração stty para o caractere de controle que deseja religar.Isso funciona para mim com o seguinte código no
~/.bashrc
bash 4.3 no Ubuntu 16.04.Não funciona se eu apenas colar isso na linha de comando: obtenho o efeito que você mencionou em um comentário, ou seja, pressionar
^U
insere um literal^U
. Funciona se eu executarstty kill ''
, entãobind -x …
em um comando subseqüente.