Em esta discussão as principais respostas mostra como copiar o texto que foi previamente selecionado com o mouse em um gnome-terminal, para a área de transferência no X11.
Minha pergunta é: Digamos que eu copie um pedaço de texto do terminal usando a marca de ajuste do bash e copie os atalhos do teclado (ou seja, set-mark
+ M-w
). É possível compartilhar esta área de transferência com o X11?
EDIT : Na pergunta original, eu falei sobre o compartilhamento da área de transferência com o GNOME, mas como Gilles aponta abaixo, o GNOME não possui especificamente uma área de transferência (é geral para o X), então atualizei a questão.
Respostas:
A área de transferência do Bash é interna ao bash, o bash não se conecta ao servidor X.
O que você pode fazer é alterar o significado de
M-w
copiar a seleção para a área de transferência do X¹, além da área de transferência interna do bash. No entanto, a integração do bash é bastante flexível, e não acho que haja uma maneira de acessar as informações da região ou a área de transferência a partir do código do bash. Você pode fazer uma ligação de tecla para copiar toda a linha na área de transferência do X.²Se você quiser fazer coisas sofisticadas no shell, mude para zsh, que (entre outras vantagens) tem uma integração muito melhor entre o editor de linha e a linguagem de script.
¹ O Gnome não possui especificamente uma área de transferência, isso é geral para o X.
² A partir do bash 4.1, há um erro no código de análise de chave: as seqüências de teclas vinculadas a
bind -x
podem não ter mais de dois caracteres. Eu acho que o bash 4.2 corrige alguns casos de prefixos mais longos, mas nem todos; Eu não pesquisei os detalhes.fonte
zsh
.copy_line_to_x_clipboard
é exatamente o que eu estava perdendo há muito tempo: a cópia equivalente a shift + insert. Mudei para ctrl-x (bind -x '"\C-x"
) porqueEsc
é muito longe do meu gosto (e Cc seria a escolha mais burra possível).esc
seguido por esse caractere, para que você possa digitá-lo comoalt-w
.@Gilles já deu uma excelente resposta. Gostaria apenas de mencionar a existência de
xclip
, que também é uma maneira muito útil de copiar a saída do terminal para a área de transferência do X, apenas canalizando qualquer coisa para ela:fonte
xclip
copia no buffer primário por padrão. Para usar a área de transferência, usexclip -selection clipboard
.