¿Hacer que Ctrl + C copie texto en gnome-terminal?

70

¿Es posible para mí hacer Ctrl+ Cejecutar un comando de copia si hay texto resaltado en el terminal?
De lo contrario, debe conservar su comportamiento normal.

(Si hay un terminal que puede hacer esto además de gnome-terminal, probablemente también esté bien).

Mehrdad
fuente
1
No tienes que usar el mouse; en un teclado Mac puedes usar shift+ enter+ fn. Y, en un teclado 'normal', creo que es shifty insert.
David Thomas
Confirmo. Solo uso otra combinación de copy-fu en un teclado 'normal': Ctrl + Insertar para copiar (y Shift + Insertar para pegar) que no entra en conflicto con la interrupción del programa Ctrl + C
kza

Respuestas:

74

Puede cambiar la combinación de teclas para Cortar y Pegar del valor predeterminado Ctrl+ Shift+ C, Ctrl+ Shift+ Va lo que dice, es decir, Ctrl+ C, Ctrl+ V, en el menú Edición → Accesos directos del teclado . Aunque también debe cambiar el significado predeterminado del terminal asociado con Ctrl+ C(interrupción), por ejemplo de esta manera

stty intr ^J

(Elegí Ctrl+ Jporque no recuerdo que esté asociado con alguna acción, pero puedes hacer tu propia elección).

No creo que sea posible retener la acción de interrupción predeterminada para Ctrl+ Csolo cuando no hay texto resaltado.

enzotib
fuente
1
Como señaló @Pithikos en la respuesta de mangoDrunk, después de reasignar el acceso directo Copiar a Ctrl + C, puede usar Ctrl + Shift + C para interrumpir sin tener que configurar nada más.
dubrox
1
Lo configuré en ^ Q porque normalmente es "descongelar / iniciar", que rara vez se usa, es dañino y está más cerca de CTRL. Si alguien decide hacer esto también, no debe olvidar volver a asignar "inicio" primero como: stty start ^ J
k3a
Tenga en cuenta que es imposible establecerlo en una combinación que implique usar Shift stty. (Lo configuré en ^ X, ya que 'cortar' no tiene sentido aquí.)
Evgeni Sergeev
39

Ctrl+ Cya está asignado a otro comando, que es el que interrumpe el programa que se ejecuta en el terminal. Por ejemplo, hacer ping a www.google.com comenzará a hacer ping a Google hasta que le indique que se detenga. La forma en que lo haces es presionando Ctrl+C

Entonces, no podían simplemente cambiar la asignación de esa combinación.

Resalte el texto que desea copiar, presione Ctrl+ Shift+ Cy se copia al portapapeles. Ctrl+ Shift+ Vy lo pegas.

Avísame si no funciona ...

Dan
fuente
16
En lugar de decir que esas combinaciones de teclas tienen otros significados específicos en el terminal, probablemente sea más correcto decir que varias aplicaciones de consola esperan poder usarlas, por lo que si el emulador del terminal no las transfiere, podría inutilizar esas aplicaciones .
James Henstridge
66
OS X es un poco más inteligente: cuando se selecciona un texto, se interpreta Ctrl+Ccomo copia y cuando no se selecciona ningún texto, se interpreta como interrupción.
Behrang
55
En realidad, OS X no es más inteligente. El atajo de teclado para copiar es Cmd-C, no Ctrl-C.
Andrei Maxim
28

Además de lo que dijo @Dan, hay otra opción para copiar y pegar texto en Linux que encuentro mucho más rápido y fácil de usar, ya que no es necesario cambiar desde el mouse (que está utilizando para hacer la selección) al teclado :

  • seleccionar texto con el mouse lo copia al portapapeles
  • medio clic lo pega.

Esta característica es especialmente útil en la terminal, por ejemplo, cuando se ensambla un comando a partir de bits de texto que ya están en la pantalla.

Esto funciona en todas las aplicaciones, por lo que es posible copiar y pegar texto desde una página web al terminal, etc.

El búfer del portapapeles utilizado para copiar y pegar con el botón central está separado del utilizado para Ctrl-C / Ctrl-V, lo que hace posible que se copien dos bits diferentes de texto al mismo tiempo.

Sergey
fuente
25

Como ya se señaló, Ctrl+ Cse usa típicamente para interrumpir un programa. Pero en lugar de usar Ctrl+ Shift+ Cpara copiar, lo que hago con mucha más frecuencia que interrumpir un proceso, cambio la configuración para tener Ctrl+ Cpara copiar y Ctrl+ Shift+ Cpara interrumpir.

Puede hacer esto en la Terminal de GNOME yendo a "Editar" -> "Atajos de teclado ..." y asigne la acción "Copiar" a Ctrl+ Cy "Pegar" a Ctrl+ V. El comando de interrupción se reasignará automáticamente a Ctrl+ Shift+ C.

mangoDrunk
fuente
1
Pero, ¿cómo mapeo Ctrl + Shift + C para interrumpir un proceso?
kramer65
11
Sucedió automáticamente para mí. Todo lo que hice fue configurar Copiar a Ctrl + C y después de guardar eso, Ctrl + Shift + C se interrumpió.
mangoDrunk
1
@mangoDrunk la razón es que la celebración Shift + Ctrl + <key>esencialmente imprime el mismo carácter que Ctrl + <key>. Puedes probar conread
Pithikos
Sugiero hacer esto porque copio, pego MUCHO más de lo que interrumpo un proceso y es fácil recordar ctrl + shift + C como interrupción en lugar de cambiar mi hábito de copiar, que es lo mismo en todas partes.
Flyingdrifter
3

Para hacer que cortar y pegar ( Ctrl+ V, Ctrl+ C) funcione en la consola o terminal, coloque el siguiente código en la terminal para cambiar las combinaciones de teclas automáticamente:

gconftool-2 -t str -s /apps/gnome-terminal/keybindings/copy "<Control>c"

gconftool-2 -t str -s /apps/gnome-terminal/keybindings/paste "<Control>v"
usuario165696
fuente
1

Perdón por escribir una respuesta sobre esto, parece que gasté demasiado de mi reputación en una recompensa por poder publicar un comentario.

No hay forma de cambiar el comportamiento de los atajos de teclado dependiendo de si hay una selección de texto o no, y evitaría reasignar Ctrl-C del terminal.

PERO, puedes acostumbrarte fácilmente

  • Ctrl+ Inspara copiar
  • Shift+ Inspara pegar

Esto funciona prácticamente en todas partes (excepto en Nautilus , suspiro), ¡y casi nunca interfiere con nada!

Walter Tross
fuente
1

¿Alguien quería que pudieras usar?

> stty intr ^K         # free Ctrl+C for copy use Ctrl+K instead
> stty lnext ^-        # free Ctrl+V for paste use ^- instead
> stty -g
> stty -g > ~/.stty    # store the settings in home directory

Agregue lo siguiente a ~/.bashrc

case $- in
 *i*)
   stty `cat ~/.stty`     #  reload the stored stty settings
   bind -u quoted-insert  #  unbind the quoted-insert function of bash - free Ctrl+V for paste
esac

Y luego gconf editor o somesuch para cambiar las combinaciones de teclas de los terminales a CTRL+ Cpara Copiar y CTRL+ Vpara pegar.

Sandip Chitale
fuente
Argh ... el formato se asombró. Ver: sandipchitale.blogspot.com/2008/10/…
Sandip Chitale
1

en Lxterminal (terminal predeterminado en Lxde), puede personalizar completamente los accesos directos:

ingrese la descripción de la imagen aquí

Woeitg
fuente
0

Creo que no puedes porque en gnome terminal Ctrl+ C, Ctrl+ X, Ctrl+ Vno funcionan. Para cortar, copiar y pegar debe resaltar el texto, hacer clic derecho y elegir la acción que desea realizar

usuario21857
fuente
aún puede usar atajos para cortar en el terminal, estos son ctrl + shift + c (copiar) y ctrl + shift + v (pegar) y ctrl + shift + x.
Rens
0

Como ya se dijo, Ctrl-C no funcionará debido al uso de interrupción, pero acabo de descubrir una forma que funcionó para mí. Mi objetivo era tener solo dos teclas, no tres, y preferiblemente algo a lo que estoy acostumbrado, y no en un lugar demasiado incómodo en el teclado. El teclado que tengo en mi caja de Linux tiene una tecla "Windows", en el mismo lugar que la tecla Comando en una Mac. Así que solo fui a Edición> Atajos de teclado, cuando cambié los atajos para usar esta tecla, dice Super + C y Super + V. A veces también uso una Mac, así que fue fácil acostumbrarse a esto.

foraker
fuente