Ci sono un paio di modi. Alcuni dei modi che sono stati menzionati includono (penso) tmux, screen, vim, emacs e shell. Non conosco emacs o screen, quindi esaminerò gli altri tre.
tmux
Pur non essendo una selezione X, tmux ha una modalità di copia accessibile tramite prefix-[
( prefix
è Ctrl+ Bper impostazione predefinita). Il buffer utilizzato per questa modalità è separato ed esclusivo di tmux, il che apre parecchie possibilità e lo rende più versatile delle selezioni X nelle giuste situazioni.
Per uscire da questa modalità, premi q; per navigare, usare la tua vim
o la emacs
rilegatura (default = vim), quindi hjkl
per il movimento, v/V/C-v
per la selezione di caratteri / linea / blocco, ecc. Quando hai la tua selezione, premi Enterper copiare ed uscire dalla modalità.
Per incollare da questo buffer, utilizzare prefix-]
.
Conchiglia
Ogni installazione di X11
sembra avere due programmi di default: xclip
e xsel
(un po 'come viene fornito anche con entrambi startx
e xinit
). La maggior parte delle altre risposte menziona xclip
, e mi piace molto xsel
per la sua brevità, quindi parlerò xsel
.
Da xsel (1x) :
Opzioni di input
-a, --appendi
aggiunge input standard alla selezione. Implica -i .
-f, --segui
accoda alla selezione man mano che aumenta l'input standard. Implica -i .
-i, --input
leggere l'input standard nella selezione.
Opzioni di output
-o, --output
scrivere la selezione sullo standard output.
Opzioni di azione
-c, --clear
cancella la selezione. Sostituisce tutte le opzioni di input.
-d, --delete
Richiedi l'eliminazione della selezione corrente. Ciò non solo cancella la selezione, ma richiede anche al programma in cui la selezione risiede che i contenuti selezionati vengano eliminati. Sostituisce tutte le opzioni di input.
Opzioni di selezione
-p, --primary
operare sulla selezione PRIMARY (impostazione predefinita).
-s, --secondary
operare sulla selezione SECONDARIA.
-b, --clipboard
operare sulla selezione CLIPBOARD.
E questo è tutto ciò che devi sapere. p
(o niente) per PRIMARY
, s
per SECONDARY
, b
per CLIPBOARD
, o
per l'output.
Esempio: dire che voglio copiare l'output di foo
un TTY e incollarlo in una pagina Web per una segnalazione di bug. Per fare ciò, sarebbe l'ideale copiare nella / dalla sessione TTY / X. Quindi la domanda diventa come posso accedere agli Appunti dal TTY?
Per questo esempio, supponiamo che la sessione X sia visualizzata :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
Quindi posso Ctrl-V
farlo nella forma come al solito.
Ora dì che qualcuno sul sito di supporto mi dà un comando da eseguire per risolvere il problema. È complicato e lungo.
$ 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
L'ordinamento della pizza sembra un uso produttivo della riga di comando.
...andare avanti.
Vim
Se compilato con +clipboard
(Questo è importante! Controlla il tuo vim --version
), Vim dovrebbe avere accesso alla X PRIMARY
e alle CLIPBOARD
selezioni. Le due selezioni sono accessibili dai registri *
e +
, rispettivamente, e possono essere scritte e lette a piacimento come qualsiasi altro registro. Per esempio:
:%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
Se la tua copia di vim non supporta direttamente l'accesso alle selezioni X, tuttavia, non è la fine del mondo. Puoi semplicemente usare la xsel
tecnica come descritto nell'ultima sezione.
:r ! xsel -bo ; read (r) from the stdout of (!) `xsel -bo`
:w ! xsel -b ; write (w) to the stdin of (!) `xsel -b`
Associa un paio di combinazioni di tasti e dovresti essere bravo.
:%y+
in vim, che è vim-speak per "yank (copia) tutte le righe nel registro '+' (gliPRIMARY
appunti X )". È possibile sostituire%
con un intervallo se si desidera essere specifici. Ma ci sono tre avvertenze: 1. Ora devi salvare qualsiasi testo in un file prima di poterlo copiare. Ciò è in contrasto con ilxclip
comando menzionato nelle risposte. 2. Se non sai già come vim, questo potrebbe essere noioso. 3. Puoi farlo solo se una determinata funzione è abilitata durante la compilazione di vim. Se installi GVim, dovrebbe essere abilitato di default in entrambe le istanze GUI e terminali di vim.