É simples, mas você precisa instalar a ferramenta xsel
primeiro:
sudo apt-get install xsel
TL; DR: Aqui estão os comandos que você provavelmente deseja usar para seus atalhos no final. Estou usando as versões com printf
em todos os lugares para uniformidade e personalização mais fácil, mesmo que uma variante mais simples tenha sido suficiente:
-
Anexar seleção ao final da área de transferência diretamente:
bash -c 'printf "%b%b" "$(xsel -b)" "$(xsel)" | xsel -ib ; xsel -c'
-
Anexar seleção ao final da área de transferência após uma quebra de linha:
bash -c 'printf "%b\n%b" "$(xsel -b)" "$(xsel)" | xsel -ib ; xsel -c'
-
Anexar seleção ao início da área de transferência diretamente:
bash -c 'printf "%b%b" "$(xsel)" "$(xsel -b)" | xsel -ib ; xsel -c'
-
Anexar seleção ao final da área de transferência após uma quebra de linha:
bash -c 'printf "%b\n%b" "$(xsel)" "$(xsel -b)" | xsel -ib ; xsel -c'
Eles estão todos incluindo a redefinição do buffer principal após anexar à área de transferência para evitar o acréscimo duplo do mesmo conteúdo. Se você não quiser isso, remova o ; xsel -c
do final de cada comando.
Longa explicação:
Você precisa saber que X contém 3 buffers, a seleção primária , a seleção secundária e a área de transferência .
Você conhece a área de transferência de Ctrl + C , Ctrl + V etc. É o buffer que você normalmente use para copiar e colar coisas.
A seleção principal é o buffer que sempre contém automaticamente o texto selecionado, não importa em qual janela ele esteja e sem nenhuma interação adicional do usuário. Nós temos apenas um problema: o buffer é atualizado No momento em que você seleciona um trecho de texto, ele não é limpo quando você clica em qualquer outro lugar para cancelar a seleção. Ainda conterá o conteúdo da sua última seleção.
A seleção secundária é usada apenas por alguns programas e não é interessante para nós aqui.
Isso significa que podemos imitar o comportamento de Ctrl + C com este comando abaixo que copia a seleção principal (último texto realçado) para a área de transferência:
xsel | xsel -ib
xsel
sem nenhum argumento imprime o conteúdo da seleção principal em STDOUT. xsel -ab
escreve ( -i
) os dados de STDIN para a área de transferência ( -b
).
Para anexar diretamente os dados ao conteúdo atual da área de transferência (sem quebra de linha no meio) em vez de substituí-los, usamos a opção -a
em vez de -i
. Este comando anexará o último trecho de texto selecionado ao conteúdo atual da área de transferência:
xsel | xsel -ab
Se você realmente quiser uma quebra de linha adicional ou qualquer outra formatação, podemos enviar os dados por meio de printf
ou qualquer outra ferramenta que você queira usar para processá-la. Aqui está um exemplo que lê a última seleção e o conteúdo atual da área de transferência e os une usando uma nova linha:
printf "%b\n%b" "$(xsel -b)" "$(xsel)" | xsel -ib
xsel -b
retorna o conteúdo atual da área de transferência. A string de formato de printf
usa %b
como espaço reservado para os argumentos, \n
representa uma quebra de linha. Você pode descobrir mais sobre printf
digitando man printf
.
Ao alternar os dois argumentos no final da string, você pode inverter a ordem deles e anexar ao início, em vez de ao fim.
Se você deseja evitar anexar os mesmos dados à área de transferência duas vezes acidentalmente (você terá que selecioná-la novamente se quiser anexá-la duas vezes!), você pode limpar o buffer de seleção principal manualmente após o comando ter sido executado usando isso:
xsel -c
Basta executar isso depois do comando básico anexado da área de transferência, assim:
printf "%b\n%b" "$(xsel -b)" "$(xsel)" | xsel -ib ; xsel -c
Portanto, sabendo tudo isso, você pode escrever comandos para seus atalhos de teclado que fazem exatamente o que você quer, mas lembre-se que os nossos one-liners fazem uso pesado de recursos Bash como tubulações, então você precisa executá-los com Bash: / p>
bash -c 'COMMAND'
Veja a seção TL; DR na parte superior da resposta de uma lista de comandos adequada para criar atalhos.