Fazendo Ctrl + C copiar texto no terminal gnome?


70

É possível fazer Ctrl+ Cexecutar um comando de cópia se houver texto destacado no terminal?
Caso contrário, ele deve manter seu comportamento normal.

(Se houver um terminal que possa fazer isso diferente do terminal gnome, provavelmente isso também será bom.)


11
Você não precisa usar o mouse; em um teclado Mac, você pode usar shift+ enter+ fn. E, em um teclado 'normal', acho que é shifte insert.
David Thomas

Eu confirmo. Eu só usar outra mistura de cópia-fu em um teclado 'normal': Ctrl + Inserir para cópia (e Shift + Insert para colar), que não entra em conflito com programa de interrupção Ctrl + C
KZA

Respostas:


74

Você pode alterar o atalho de teclado para cortar e colar a partir do padrão Ctrl+ Shift+ C, Ctrl+ Shift+ Vpara o que você diz, ou seja, Ctrl+ C, Ctrl+ V, na Editar → Atalhos de teclado menu. Embora você também deva alterar o significado padrão do terminal associado a Ctrl+ C(interrupção), por exemplo, desta maneira

stty intr ^J

(Escolhi Ctrl+ Jporque não me lembro de estar associado a alguma ação, mas você pode fazer sua própria escolha.)

Eu não acho que é possível manter a ação de interrupção padrão para Ctrl+ Csomente quando não houver texto realçado.


11
Conforme observado pelo @Pithikos na resposta do mangoDrunk, depois de remapear o atalho de cópia para Ctrl + C, você pode usar Ctrl + Shift + C para interromper sem precisar configurar mais nada.
dubrox

11
Eu o defino como ^ Q, porque normalmente é "descongelar / iniciar", que raramente é usado, prejudicial e mais próximo do CTRL. Se alguém decide fazer isso também, não se deve esquecer de remapear "start" primeiro como: stty começar ^ J
K3A

Observe que é impossível defini-lo como uma combinação que envolve o uso de Shift stty. (Eu configurei para ^ X, pois 'cortar' não faz sentido aqui.)
Evgeni Sergeev

39

Ctrl+ Cjá está atribuído a outro comando, que interrompe o programa em execução no terminal. Por exemplo, o ping www.google.com começará a executar ping no Google até você pedir para parar. A maneira como você faz isso é pressionando Ctrl+C

Portanto, eles não podiam simplesmente mudar a atribuição dessa combinação.

Destaque o texto que deseja copiar, pressione Ctrl+ Shift+ Ce ele é copiado para a área de transferência. Ctrl+ Shift+ Ve você o cola.

Deixe-me saber se não funcionar ...


16
Em vez de dizer que essas combinações de teclas têm outros significados específicos no terminal, provavelmente é mais correto dizer que vários aplicativos de console esperam poder usá-los, portanto, se o emulador de terminal não os transmitir, pode tornar esses aplicativos inutilizáveis. .
James Henstridge

6
O OS X é um pouco mais inteligente: quando um texto é selecionado, ele interpreta Ctrl+Ccomo cópia e, quando nenhum texto é selecionado, ele interpreta como interrupção.
Behrang

5
Na verdade, o OS X não é mais inteligente. O atalho do teclado para cópia é Cmd-C, não Ctrl-C.
Andrei Maxim

28

Além do que o @Dan disse, há outra opção para copiar e colar texto no Linux, que estou achando muito mais rápido e fácil de usar, já que não há necessidade de mudar do mouse (que você está usando para fazer a seleção) para o teclado :

  • selecionar texto com o mouse copia-o para a área de transferência
  • clique com o botão do meio cola.

Esse recurso é especialmente útil no terminal, por exemplo, ao montar um comando a partir de bits de texto que já estão na tela.

Isso funciona em todos os aplicativos, por isso é possível copiar e colar texto de uma página da web para o terminal etc.

O buffer da área de transferência usado para copiar e colar com o botão do meio é separado daquele usado para Ctrl-C / Ctrl-V, que possibilita a cópia de dois bits diferentes de texto ao mesmo tempo.


25

Como já observado, o Ctrl+ Cé normalmente usado para interromper um programa. Mas, em vez de usar Ctrl+ Shift+ Cpara copiar, o que faço com mais frequência do que interromper um processo, altero a configuração para ter Ctrl+ Cpara copiar e Ctrl+ Shift+ Cpara interromper.

Você pode fazer isso no Terminal GNOME, indo em "Editar" -> "Atalhos do teclado ..." e mapeie a ação "Copiar" para Ctrl+ Ce "Colar" para Ctrl+ V. O comando de interrupção será remapeado automaticamente para Ctrl+ Shift+ C.


11
Mas como mapeio Ctrl + Shift + C para interromper um processo?
precisa saber é o seguinte

11
Isso aconteceu automaticamente para mim. Tudo o que fiz foi definir Copiar como Ctrl + C e, depois de salvar, Ctrl + Shift + C tornou-se interrompido.
precisa

11
@mangoDrunk a razão é que a realização Shift + Ctrl + <key>essencialmente imprime o mesmo caráter Ctrl + <key>. Você pode testar comread
Pithikos

Sugiro fazer isso porque copio e colo MUITO mais do que interrompo um processo e é fácil lembrar de ctrl + shift + C como interrupção, em vez de alterar meu hábito de copiar, que é o mesmo em qualquer outro lugar.
flyingdrifter

3

Para que recortar e colar ( Ctrl+ V, Ctrl+ C) funcione no console ou no terminal, coloque o seguinte código no terminal para alterar as combinações de teclas automaticamente:

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

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

1

Desculpe por escrever uma resposta sobre isso, parece que eu gastei muito da minha reputação em uma recompensa por poder postar um comentário.

Não há como alterar o comportamento dos atalhos do teclado, dependendo de haver ou não uma seleção de texto, e eu evitaria reatribuir o Ctrl-C do terminal.

MAS, você pode se acostumar facilmente a

  • Ctrl+ Inspara copiar
  • Shift+ Inspara colar

Isso funciona praticamente em todos os lugares (exceto no Nautilus , suspiro) e quase nunca interfere em nada!


1

Alguém queria que você pudesse 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

Adicione o seguinte 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

E então o editor gconf ou algo assim, para alterar as combinações de teclas dos terminais para CTRL+ Cpara copiar e CTRL+ Vpara colar.


Argh ... a formatação foi alterada. Veja: sandipchitale.blogspot.com/2008/10/…
Sandip Chitale 06/06


0

Eu acho que você não pode, porque no terminal gnome Ctrl+ C, Ctrl+ X, Ctrl+ Vnão funciona. Para recortar, copiar e colar, você precisa destacar o texto, clique com o botão direito do mouse e escolha a ação que deseja executar


você ainda pode usar atalhos para cortar no terminal: ctrl + shift + c (cópia) e ctrl + shift + v (colar) e ctrl + shift + x.
Rens

0

Como já foi dito, o Ctrl-C não funcionará por causa do uso da interrupção, mas eu descobri uma maneira que funcionou para mim. Meu objetivo era ter apenas duas teclas, não três, e de preferência algo com o qual estou acostumado, e não em um local muito inconveniente no teclado. O teclado que tenho na minha caixa Linux possui uma tecla "Windows", no mesmo local da tecla Command em um Mac. Então, eu apenas fui em Editar> Atalhos do teclado, quando alterei os atalhos para usar essa tecla, diz Super + C e Super + V. Às vezes eu também uso um Mac, então foi fácil se acostumar.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.