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.)

Mehrdad
fonte
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.

enzotib
fonte
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 ...

Dan
fonte
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.

Sergey
fonte
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.

mangoDrunk
fonte
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"
user165696
fonte
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!

Walter Tross
fonte
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.

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

no Lxterminal (terminal padrão no Lxde), você pode personalizar totalmente os atalhos:

insira a descrição da imagem aqui

Woeitg
fonte
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

user21857
fonte
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.

foraker
fonte