Hay un par de maneras. Algunas de las formas que se han mencionado incluyen (creo) tmux, screen, vim, emacs y el shell. No conozco emacs ni screen, así que repasaré los otros tres.
Tmux
Si bien no es una selección X, tmux tiene un modo de copia accesible mediante prefix-[
( prefix
es Ctrl+ Bpor defecto). El búfer utilizado para este modo es separado y exclusivo de tmux, lo que abre muchas posibilidades y lo hace más versátil que las selecciones X en las situaciones correctas.
Para salir de este modo, presione q; para navegar, use su vim
o emacs
enlace (predeterminado = vim), hjkl
por lo que para el movimiento, v/V/C-v
para la selección de caracteres / línea / bloque, etc. Cuando tenga su selección, presione Enterpara copiar y salir del modo.
Para pegar desde este búfer, use prefix-]
.
Cáscara
Cualquier instalación de X11
parece venir con dos programas por defecto: xclip
y xsel
(algo así como también viene con ambos startx
y xinit
). La mayoría de las otras respuestas mencionan xclip
, y realmente me gusta xsel
por su brevedad, así que voy a cubrir xsel
.
De xsel (1x) :
Opciones de entrada
-a, --append
agregar entrada estándar a la selección. Implica -i .
-f, --sigue
agregar a la selección a medida que crece la entrada estándar. Implica -i .
-i, --input
lea la entrada estándar en la selección.
Opciones de salida
-o, --salida
escriba la selección en la salida estándar.
Opciones de acción
-c, --clear
Borrar la selección. Anula todas las opciones de entrada.
-d, --delete
Solicite que se elimine la selección actual. Esto no solo borra la selección, sino que también solicita al programa en el que reside la selección que se eliminen los contenidos seleccionados. Anula todas las opciones de entrada.
Opciones de selección
-p, --primaria
operar en la selección PRIMARIA (predeterminado).
-s, --secondary
operar en la selección SECUNDARIA.
-b, --clipboard
operar en la selección de CLIPBOARD.
Y eso es todo lo que necesitas saber. p
(o nada) para PRIMARY
, s
para SECONDARY
, b
para CLIPBOARD
, o
para salida.
Ejemplo: digamos que quiero copiar el resultado de foo
un TTY y pegarlo en una página web para obtener un informe de error. Para hacer esto, sería ideal copiar a / desde la sesión TTY / X. Entonces, la pregunta es cómo accedo al portapapeles desde el TTY.
Para este ejemplo, asumiremos que la sesión X está en exhibición :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
Entonces puedo Ctrl-V
hacerlo en la forma habitual.
Ahora digamos que alguien en el sitio de soporte me da un comando para ejecutar para solucionar el problema. Es complicado y largo.
$ 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
Ordenar pizza parece un uso productivo de la línea de comando.
...hacia adelante.
Empuje
Si se compila con +clipboard
(¡Esto es importante! Compruebe su vim --version
), Vim debería tener acceso a la X PRIMARY
y las CLIPBOARD
selecciones. Se puede acceder a las dos selecciones desde los registros *
y +
, respectivamente, y se pueden escribir y leer en su tiempo libre como cualquier otro registro. Por ejemplo:
:%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
Sin embargo, si su copia de vim no admite directamente el acceso a las selecciones X, no es el fin del mundo. Simplemente puede usar la xsel
técnica como se describe en la última sección.
:r ! xsel -bo ; read (r) from the stdout of (!) `xsel -bo`
:w ! xsel -b ; write (w) to the stdin of (!) `xsel -b`
Ate un par de combinaciones de teclas y debería ser bueno.
:%y+
en vim, que es vim-speak para "tirar (copiar) todas las líneas en el registro '+' (elPRIMARY
portapapeles X )". Puede reemplazar%
con un rango si desea ser específico. Pero hay tres advertencias: 1. Ahora, debe guardar el texto en un archivo antes de poder copiarlo. Esto está en contraste con elxclip
comando mencionado en las respuestas. 2. Si aún no sabes cómo vim, esto puede ser tedioso. 3. Solo puede hacer esto si cierta característica está habilitada al compilar vim. Si instala GVim, debe habilitarse de manera predeterminada tanto en la GUI como en las instancias de terminal de vim.