Existem algumas maneiras. Algumas das maneiras mencionadas incluem (eu acho) tmux, screen, vim, emacs e o shell. Eu não conheço emacs ou tela, então vou passar pelos outros três.
Tmux
Embora não seja uma seleção X, o tmux tem um modo de cópia acessível via prefix-[
( prefix
é Ctrl+B por padrão). O buffer usado para esse modo é separado e exclusivo do tmux, o que abre muitas possibilidades e o torna mais versátil do que as seleções X nas situações certas.
Para sair deste modo, pressione q; para navegar, use sua vim
ou emacs
encadernação (padrão = vim); portanto, hjkl
para movimento, v/V/C-v
para seleção de caracteres / linha / bloco, etc. Quando você tiver sua seleção, pressioneEnter para copiar e sair do modo.
Para colar nesse buffer, use prefix-]
.
Concha
Qualquer instalação do X11
parece vir com dois programas por padrão: xclip
e xsel
(meio como também vem com ambos startx
e xinit
). A maioria das outras respostas menciona xclip
, e eu realmente gosto xsel
por sua brevidade, então vou cobrir xsel
.
Do xsel (1x) :
Opções de entrada
-a, --append
anexar entrada padrão à seleção. Implica -i .
-f, --follow
acrescente à seleção à medida que a entrada padrão cresce. Implica -i .
-i, --input
leia a entrada padrão na seleção.
Opções de saída
-o, - saída
escreva a seleção na saída padrão.
Opções de ação
-c, --clear
limpe a seleção. Substitui todas as opções de entrada.
-d, --delete
Solicite que a seleção atual seja excluída. Isso não apenas limpa a seleção, mas também solicita ao programa em que a seleção reside que o conteúdo selecionado seja excluído. Substitui todas as opções de entrada.
Opções de seleção
-p, --primary
operar na seleção PRIMARY (padrão).
-s, --secondary
operar na seleção SECUNDÁRIA.
-b, --clipboard
operar na seleção CLIPBOARD.
E isso é tudo que você precisa saber. p
(ou nada) para PRIMARY
, s
para SECONDARY
, b
para CLIPBOARD
, o
para saída.
Exemplo: digamos que eu quero copiar a saída de foo
um TTY e colá-la em uma página da Web para obter um relatório de erro. Para fazer isso, seria ideal copiar para / da sessão TTY / X. Portanto, a pergunta passa a ser: como acesso a área de transferência a partir do TTY?
Neste exemplo, assumiremos que a sessão X está em exibição :1
.
$ foo -v
Error: not a real TTY
details:
blah blah @ 0x0000000040abeaf4
blah blah @ 0x0000000040abeaf8
blah blah @ 0x0000000040abeafc
blah blah @ 0x0000000040abeb00
...
$ foo -v | DISPLAY=:1 xsel -b # copies it into clipboard of display :1
Então eu posso Ctrl-V
colocá-lo no formulário como de costume.
Agora diga que alguém no site de suporte me fornece um comando para executar para corrigir o problema. É complicado e longo.
$ DISPLAY=:1 xsel -bo
sudo foo --update --clear-cache --source-list="http://foo-software.com/repository/foo/debian/ubuntu/xenial/164914519191464/sources.txt"
$ $(DISPLAY=:1 xsel -bo)
Password for braden:
UPDATING %%%%%%%%%%%%%%%%%%%%%%% 100.00%
Clearing cache...
Fetching sources...
Reticulating splines...
Watering trees...
Climbing mountains...
Looking advanced...
Done.
$ foo
Thank you for your order. A pizza should arrive at your house in the next 20 minutes. Your total is $6.99
Encomendar pizza parece ser um uso produtivo da linha de comando.
...se movendo.
Vim
Se compilado com +clipboard
(Isso é importante! Verifique seu vim --version
), o Vim deve ter acesso ao X PRIMARY
e às CLIPBOARD
seleções. As duas seleções são acessíveis nos registros *
e +
, respectivamente, e podem ser gravadas e lidas a seu tempo, da mesma forma que em qualquer outro registro. Por exemplo:
:%y+ ; copy/yank (y) everything (%) into the CLIPBOARD selection (+)
"+p ; select (") the CLIPBOARD selection (+) and paste/put it
ggVG"+y ; Alternative version of the first example
Porém, se sua cópia do vim não suportar diretamente o acesso às seleções X, não será o fim do mundo. Você pode apenas usar a xsel
técnica conforme descrito na última seção.
:r ! xsel -bo ; read (r) from the stdout of (!) `xsel -bo`
:w ! xsel -b ; write (w) to the stdin of (!) `xsel -b`
Ligue alguns combos principais e você deve ser bom.
:%y+
no vim, que é o vim-speak para "puxar (copiar) todas as linhas do registro '+' (aPRIMARY
área de transferência do X )". Você pode substituir%
por um intervalo, se desejar ser específico. Mas há três ressalvas: 1. Agora, você precisa salvar qualquer texto em um arquivo antes de poder copiá-lo. Isso contrasta com oxclip
comando mencionado nas respostas. 2. Se você ainda não sabe como se divertir, isso pode ser entediante. 3. Você só pode fazer isso se um determinado recurso estiver ativado ao compilar o vim. Se você instalar o GVim, ele deverá ser ativado por padrão nas instâncias da GUI e do terminal do vim.