Terminal: Copiar e colar atalhos de teclado

Criado em 24 mai. 2019  ·  60Comentários  ·  Fonte: microsoft/terminal

Meio Ambiente

Windows build number: 10.0.18362.86
Windows Terminal version (if applicable):

Passos para reproduzir

No console padrão do Windows 10, você pode ativar o uso de Ctrl + C / V para copiar e colar. O Terminal do Windows não tem isso e é extremamente frustrante.

Comportamento esperado

Ative o uso de Ctrl + C para copiar e Ctrl + V para colar.

Comportamento real

Ctrl + C não copia nada e Ctrl + V apenas escreve ^ V no prompt.

Area-User Interface Help Wanted Issue-Task Needs-Tag-Fix Product-Terminal

Comentários muito úteis

Gosto da maneira como o WSL + Bash lida com copiar / colar. Ctrl + C copia apenas quando algo é selecionado. Se nada for selecionado, Ctrl + C se comporta normalmente e envia um SIGINT.

Todos 60 comentários

Isso soa bem no beco de @ carlos-zamora

Ou, na verdade, qualquer um poderia saltar sobre isso. Você gostaria de configurar ações de copiar e colar em App.cpp (como _Scroll , por exemplo) que acionam as ações apropriadas no TermControl. Já deve haver Copiar e Colar ShortcutActions, então é apenas uma questão de registrar os padrões para eles e conectar as ações às ligações (consulte HookupKeyBindings ou semelhante em App.cpp).

Devo insistir que as ligações padrão para isso não sejam apenas Ctrl+ .

Agh, desculpe. Não pretendia encerrar este problema.

Devo insistir que as ligações padrão para isso não sejam apenas Ctrl+ .

Eu sei por que você está dizendo isso, e é claro que é por isso que o console normal tem uma configuração que deve ser habilitada. Mas tê-los atrás de Ctrl + Shift ou algo semelhante anula o propósito. É a memória muscular que torna essas combinações de teclas que valem a pena.

Para mim, ter Ctrl + V inserir ^V nunca foi útil e suspeito que isso seja verdade para um número muito significativo de pessoas. Seria possível habilitar isso como uma configuração?

Talvez precisemos de atalhos de teclado específicos de perfil. No momento, todos os vínculos são reconectáveis: sorriso:

Gosto da maneira como o WSL + Bash lida com copiar / colar. Ctrl + C copia apenas quando algo é selecionado. Se nada for selecionado, Ctrl + C se comporta normalmente e envia um SIGINT.

@namatoj Isso é perfeito; exatamente do jeito que deveria ser.

Acho que devemos pelo menos suportar Ctrl-Insert / Shift-Insert / Shift-Delete se Ctrl-C / V / X pode ter conflitos?

IMO as opções devem ser:

  • Comportamento "inteligente", em que CTRL-C é a cópia apenas se algo for selecionado.
  • Comportamento personalizado, com atalhos de teclado que são padronizados como CTRL-SHIFT-C / V.
  • Sem comportamento, a cópia está disponível no menu do botão direito na seleção.

Toda a discussão sobre " CTRL + C sendo copiado apenas se algo for selecionado" ignora CTRL + V - não há nenhum indicador para saber que _devemos_ colar, e se alguém valoriza a consistência acima de tudo é problemático dizer " CTRL + C apenas funciona quando X, mas CTRL + V funciona sempre ". A alternativa, " CTRL + C se selecionado, CTRL + SHIFT + V para colar sempre" também não é particularmente consistente.

Mas CTRL-C é universalmente "enviar um SIGINT", há uma grande ambigüidade aí. O terminal do Ubuntu resolve isso usando CTRL-SHIFT-C / V para copiar / colar; o terminal MacOS resolve isso usando CMD-C para copiar e CTRL-C para interromper.

CTRL-V não tem tal conflito. Alguns usuários do emacs podem vinculá-lo a coisas, mas se você for um usuário avançado do emacs para religar as chaves, provavelmente você está usando capslock como sua meta-chave.

Acho que o principal risco de tornar o comportamento "inteligente" o padrão é apenas os usuários interromperem acidentalmente um processo porque perderam a seleção. Se isso for uma preocupação ou se quisermos consistência, eu diria apenas para copiar o Ubuntu e fazer as ligações padrão para CTRL-SHIFT-C / V.

Ao implementar atalhos de teclado personalizados por perfil, isso pode permitir que os atalhos de teclado padrão do Ubuntu se comportem como deveriam, ou permitir que o usuário os altere para permitir que os atalhos da área de transferência do Windows se comportem como deveriam.

@mikepurvis O comportamento inteligente Ctrl-C é usado em muitos terminais Windows sem problemas. Eu gosto de como https://github.com/Eugeny/terminus faz isso, onde pisca um pequeno pop-up para indicar que o texto foi copiado ou colado.

@mikepurvis O comportamento inteligente Ctrl-C é usado em muitos terminais Windows sem problemas. Eu gosto de como https://github.com/Eugeny/terminus faz isso, onde pisca um pequeno pop-up para indicar que o texto foi copiado ou colado.

Dicas de ferramentas para copiado seriam boas, especialmente onde Ctrl + C nem sempre é atribuído a cópia

O Terminal Gnome tem um atalho de teclado consistente que não é intuitivo no início, mas fácil de adotar, e não muito longe do CTRL + C usual para cópia.

CTRL + C : Cancelar
CTRL + Shift + C : Copiar
CTRL + Shift + V : Colar

Sem lógica de seleção, sempre funciona de uma maneira específica. Eu acho que é perfeito. Ele também se harmonizaria com outros sistemas operacionais, uma vez que esse comportamento é consistente em Linux e MacOS .

Realmente, não acho que tenhamos qualquer desculpa, já que o Prompt de Comando usa Enter para copiar e Clique com o botão direito para colar.

@NatoBoram Essa é uma opção. Mas muitas pessoas gostam do comportamento inteligente. Em todos os outros lugares do Windows, Ctrl + C é cópia e é difícil ajustar o comportamento de um aplicativo, então quero o comportamento inteligente.

Além disso, uma vez que o Conhost também mora aqui; os efeitos da colagem de texto obtidos com Ctrl+C e Ctrl+Shift+C têm efeitos diferentes.

image

A maneira como o buffer é lido está correta para o Ctrl+C também conhecido como o atalho de comportamento inteligente (ou seja, com os finais de linha).

Todos os aplicativos semelhantes a terminal têm esse problema ( CMD , Powershell , WLS -apps) e como o cérebro por trás de todos eles vive aqui, pensei: postaria.

Em qualquer outro lugar no Windows, Ctrl + C é cópia

E no Linux e no MacOS. O Windows não é diferente nesse aspecto.

É difícil ajustar o comportamento de um aplicativo

Sim, é por isso que a Microsoft decidiu que seria uma ótima ideia usar Enter para copiar e clicar com o botão direito para colar.
* Ahem *
Quer dizer, é difícil ajustar o comportamento de um sistema operacional. 🧂

Jogando em outra votação (mesmo que o assunto esteja fechado) para uma opção de configurar o comportamento inteligente. Eu, por exemplo, configuraria o comportamento inteligente para copiar e CTRL+v para colar sempre. Se eu tiver um texto destacado e quiser enviar um SIGINT, espero atingir ESC e, em seguida, CTRL+c .

O mesmo aqui, eu adoraria uma opção para fazer ctrl + v colar sempre, e ctrl + c para copiar quando selecionado e SIGINT quando não houver seleção. Este é o comportamento que tenho atualmente no conemu.

: tada: Este problema foi resolvido em # 1093, que agora foi lançado com sucesso como Windows Terminal Preview v0.3.2142.0 .: tada:

Links úteis:

🎉Este problema foi resolvido em # 1093, que agora foi lançado com sucesso como Windows Terminal Preview v0.3.2142.0 .🎉

Links úteis:

* [Release Notes](https://github.com/microsoft/terminal/releases/tag/v0.3.2142.0)

* [Store Download](https://www.microsoft.com/store/apps/9n0dx20hk701?cid=storebadge&ocid=badge)

Adicionar essas combinações de teclas resolve o problema

{
                "command" : "copy",
                "keys" : 
                [
                    "ctrl+shift+c"
                ]
},
{
                "command" : "paste",
                "keys" : [
                    "ctrl+shift+v"
                ]
}

Como é que ninguém pensou em fazer isso do modo de massa? Atualmente, toda a base de usuários está usando massa ou cygwin. Selecione para copiar, clique com o botão direito para colar. Nada mais fácil.
Editar: comentário mal educado removido. Desculpa

ninguém pensou sobre

Você quer dizer os números 524 e 2152 (que é uma solicitação de pull de um dos membros da equipe?)

Em uma pequena observação, por que colar o texto copiado com Ctrl+C e Ctrl+Shift+C parece ter efeitos diferentes no PowerShell (descrito acima em um dos comentários, repetido aqui, 🙈 desculpe!)?

Pessoalmente, prefiro o comportamento de cópia "idiota", ou seja, vinculação separada para ele em vez de vinculação ctrl + c (geralmente SIGINT) para copiar, quando algo é selecionado e bagunça o comportamento padrão de muitos shells. Isso pode se tornar irritante quando você fecha acidentalmente o aplicativo, que está sendo executado em primeiro plano, quando está tentando apenas copiar algo. A implementação atual é ótima!

Eu adicionei ligações para Ctrl + C (que copia se selecionado e envia um SIGINT) e Ctrl + V que funcionam perfeitamente bem e são muito intuitivas para mim.

Como disse @aolchawa , acrescentando

        {
            "command" : "copy",
            "keys" : 
            [
                "ctrl+c"
            ]
        },
        {
            "command" : "paste",
            "keys" : [
                "ctrl+v"
            ]
        }

aos atalhos de teclado resulta no comportamento "Inteligente" @mikepurvis definido acima.
Não entendo completamente como o terminal escolhe entre SIGINT e Ctrl + C agora, não vejo uma mudança em # 1093, que define isso, vejo na linha 46 que estamos passando trimWhitespace para CopyTextEventArgs .
Suponho que essa seja a parte da mudança que causa o comportamento desejado (para mim).
Não parece haver uma configuração em profiles.json ou o esquema de perfil que pode ser aproveitado para alternar o comportamento.

De qualquer forma, esse é o comportamento que _I_ estava procurando; espero que minha perambulação por aqui poupe alguns momentos de busca no PR para descobrir o que está acontecendo.

@ltomes Portanto, a mudança que fez o Terminal escolher entre SIGINT e Ctrl + C foi na verdade # 2446. Agora, o título é um pouco enganador: o que ele realmente implementa é "se uma ação de atalho de teclado disser que não fez nada (ou não foi manipulada), dê ao Terminal uma segunda chance de manipulá-la". :sorriso:

Obrigado pelo acompanhamento / explicação @ DHowett-MSFT! Me sinto mais sensato agora vendo aquela mudança, pensei que estava cansado demais para funcionar. 🤣

Obrigado pelos atalhos de teclado.
Agora o Windows Terminal funciona como o Windows cmd. :) (Fiquei realmente surpreso que não funcionou como cmd padrão do Windows)

O Terminal Gnome tem um atalho de teclado consistente que não é intuitivo no início, mas fácil de adotar, e não muito longe do CTRL + C usual para cópia.

CTRL + C: Cancelar
CTRL + Shift + C: Copiar
CTRL + Shift + V: Colar

Sem lógica de seleção, sempre funciona de uma maneira específica. Eu acho que é perfeito. Ele também se harmonizaria com outros sistemas operacionais, uma vez que esse comportamento é consistente em Linux e MacOS .

Realmente, não acho que temos desculpas, já que o prompt de comando usa Enter para copiar e clique com o botão direito para colar.

Eu sempre substituo o Terminal Gnome para usar CTRL + C / CTRL + V. Ter esse único aplicativo usando ligações diferentes para copiar / colar do que o resto do sistema inteiro é irritante para mim.

A solução alternativa por meio da adição manual de atalhos de teclado é útil, mas vamos chamar um spade de spade: o problema não é resolvido até que haja atalhos de teclado padrão onipresentes para o recurso de copiar e colar. Que, claro, deve ser capaz de ser substituído. E deve ser documentado com certeza.

Algum motivo particular para Ctrl + Insert registrar como ;5~ e Shift + Insert registrar como ;2~ e, portanto, não funcionar como atalho de teclado para copiar / colar?

Eu adoro essas chaves e não consigo entender por que não deveriam funcionar

@darthcabs Você se importaria de compartilhar seu arquivo de configuração? A única coisa que vem à mente é que você pode usar ataduras de acordes em vez de ataduras individuais:

ataduras de acordes (isso não vai funcionar e, quando isso acontecer, não terá o efeito pretendido)

"keybindings": [
    { "command": "copy", "keys": ["ctrl+shift+c", "shift+ins"] }
]

vínculos individuais (isso deve funcionar; # 3324 sugere um problema que não podemos reproduzir)

"keybindings": [
    { "command": "copy", "keys": ["ctrl+shift+c"] },
    { "command": "copy", "keys": ["shift+ins"] }
]

@ DHowett-MSFT Eu estava respondendo a você quando descobri qual era o problema ... No teclado do meu laptop, a tecla INS é igual à tecla F12.

Antes eu tentava digitar INS pressionando FN + F12, mas acabou sendo mais fácil mapear copiar / colar no Terminal para ctrl + f12 / shift + f12 respectivamente.

Muito obrigado pela inspiração, rs!

@darthcabs Você se importaria de compartilhar seu arquivo de configuração? A única coisa que vem à mente é que você pode usar ataduras de acordes em vez de ataduras individuais:

ataduras de acordes (isso não vai funcionar e, quando isso acontecer, não terá o efeito pretendido)

"keybindings": [
  { "command": "copy", "keys": ["ctrl+shift+c", "shift+ins"] }
]

vínculos individuais (isso deve funcionar; # 3324 sugere um problema que não podemos reproduzir)

"keybindings": [
  { "command": "copy", "keys": ["ctrl+shift+c"] },
  { "command": "copy", "keys": ["shift+ins"] }
]

Para mim, o que funcionou é shift+insert , não shift+ins - postar aqui apenas no caso de ajudar alguém.

Como podemos ver, esse é um problema que ocorre constantemente porque não é intuitivo. Veja https://github.com/ayugioh2003/today-i-learned/issues/281

Ctrl + C, Ctrl + V devem "simplesmente funcionar" e não há como contornar isso. Os usuários deram (e continuam fazendo) seu veredicto.

E como a nova ferramenta de linha de comando (não esta) funciona "corretamente", ou seja. como esperado, este também deveria. Se os desenvolvedores gostam de outro cenário, adicione-o como uma configuração e deixe o comportamento popular ser o padrão.

Agradeço sua contribuição aqui. Obrigado! Apenas para destacar alguns pontos:

  • É um cenário hoje! Essas combinações de teclas podem ser definidas em profiles.json .
  • Uma olhada preliminar no panorama de usuários que _ter_ personalizaram seus perfis mostra que menos de 1% dos usuários do Terminal estão vinculando ctrl + c / v. Parece que o comportamento popular foi definido como padrão.

Mas isso presumindo que as pessoas saibam como mudar isso. Perdoe minhas más maneiras.

Uma métrica mais significativa seria quantos pressionaram Ctrl + V tendo algo
na área de transferência e, em seguida, obteve o ^ V e, em seguida, apagou-o ou simplesmente terminou em
encerrando o aplicativo ...

Den tors 19 mars 2020 02: 31Dustin L. Howett (MSFT) [email protected]
skrev:

Para qualquer um que acesse este tópico do Google: os atalhos de teclado padrão são Ctrl+Shift+C e Ctrl+Shift+V . Não os encontrei em minhas configurações, então não tinha certeza de quais eram os padrões.

Além disso, não vejo isso discutido aqui, mas acho que vale a pena mencionar: Enter para copiar e clicar com o botão direito para colar também não funciona.

Do ponto de vista da acessibilidade, ter combinações de 3 teclas ou um clique do mouse + tecla é muito difícil, senão impossível, para pessoas com apenas uma das mãos ou com função limitada. Esta é uma grande razão pela qual não consigo usar o emacs e fico preso ao vi / vim.

O comportamento padrão que tivemos no Linux / Xwindows nos últimos 20 anos é o mais acessível. DoubleClick para selecionar uma palavra, clicar três vezes na linha e clicar com o botão direito nas pastas. Isso parece funcionar dentro de um quadro de Terminal, mas não preenche a área de transferência de forma confiável. Nota - ConEmu tem esta funcionalidade - posso selecionar texto em um terminal e preencher a área de transferência.

@ DHowett-MSFT, também fiquei sem entender por que copiar / colar não funciona como qualquer outro terminal no Windows ou Linux (que é o que me levou a este problema no github após algumas pesquisas). Não acho que as pessoas prefiram essa configuração, elas simplesmente não têm ideia de como alterá-la e não se sentem confortáveis ​​editando o arquivo de atalhos de teclado.

não funciona como qualquer outro terminal no Windows ou Linux

Isso é um pouco dramático, dado que o comportamento padrão atual do Terminal (Ctrl-Shift-C / V) corresponde exatamente ao que o terminal padrão do Ubuntu faz.

Essa é uma questão de nível superior; para quem devemos otimizar? Claramente não o
usuários do Windows ...

Den tors 9 abr. 2020 19: 08Mike Purvis [email protected] skrev:

Só estou dizendo que é injusto agarrar nossas pérolas e afirmar que a equipe do Terminal fez a chamada errada aqui porque é diferente de "todos os outros terminais no Windows ou Linux", quando todos os outros terminais no Windows são de terceiros e a equipe aqui _copiou como padrão o que a distribuição líder do Linux tem feito desde sempre_.

E a única razão pela qual isso também não é um problema no Mac OS é que cmd e ctrl nesse sistema são botões separados.

Todos os pontos são justos, Mike, mas vamos enfrentá-lo, a maioria dos usuários do Windows não saberá
como colar neste terminal.

Esse é o meu único problema aqui. Não só meu, mas muita gente, muita gente
ser bastante proficiente em Windows, mas nenhuma experiência com Linux, e
há um problema em ninguém saber exatamente quantos. Queremos essas pessoas
usar o terminal ou descartá-lo como recurso incompleto?

Se estamos satisfeitos com o estado atual das coisas, então, no mínimo,
vamos medir quantos tentam colar, mas não conseguem.

Se não quisermos telemetria nisso, que tal um pequeno contador e quando
você tentou 3 vezes em 3 minutos, mostre uma notificação com um link para
esse assunto.

... to brincando, instruções de como mudar.

Den tors 9 abr. 2020 19: 57Mike Purvis [email protected] skrev:

Para o bem da telemetria, acabei de baixar e construir este terminal hoje e esta é minha única reclamação principal até agora. Há uma opção em Preferências que me indica que Ctrl-C / V deve funcionar, mas obviamente não funciona. Habilite o recurso "Smart Ctrl-C" mencionado acima, é minha reclamação nº 1 sobre o CMD desde o início dos tempos. :)

Quero ressaltar que encontrei esse problema ao pesquisar como o Terminal do Windows implementou copiar e colar. Uma das maiores reclamações que ouço dos desenvolvedores que trabalham no Linux e no Windows é que copiar / colar no Windows é inconsistente com qualquer shell de terceiros instalado e entre o Linux. Quase todas as distribuições / terminais Linux usam ctrl+shift+c/v , então estou feliz que o Windows Terminal também tenha isso definido como padrão.

Por que não ter Ctrl + C / V e Ctrl + Shift + C / V embora?

@ bjorn-ali-goransson Na verdade, acabamos de alterar o arquivo de configurações padrão para incluir ambos, para que os usuários possam facilmente optar por não usar Ctrl + C / Ctrl + V se quiserem.

Veja este PR e # 5187

  • Parece que o comportamento popular foi definido como padrão.

Absurdo. Significa que as pessoas abandonam a tentativa de consertá-lo ou não sabem que pode ser consertado.

É a razão pela qual estou neste tópico agora.

@soilstack, obrigado. Considere ler as mensagens mais recentes neste tópico.

É realmente espantoso para mim que vocês não consigam descobrir como fazer algo tão fundamental como este funcionar! Este é um grande negócio. Adoro tudo o mais no aplicativo Terminal, mas essa falha básica me surpreende toda vez que eu o uso.

@SteveIves Você sabe que pode alterar os atalhos de teclado para o que quiser, certo? Se você deseja Ctrl + C / V como copiar e colar, vá em frente e adicione-os às suas combinações de teclas. Se você quiser Ctrl + Shift + C / V , também pode usá-los. Se você quiser alt + q como copiar e shift + 0 como colar, vá em frente.

A partir de 1.0, os padrões incluem Ctrl + Shift + C / V como copiar e colar, e os novos usuários _também_ obterão Ctrl + C / V como copiar / colar em seus arquivos de configurações.

EDITAR:use qualquer subconjunto destes que desejar:

{
  "keybindings": [
    // Ctrl+C / Ctrl+V for copy paste
    { "keys": "ctrl+c", "command": "copy"},
    { "keys": "ctrl+v", "command": "paste"},

    // Ctrl+Shift+C / Ctrl+Shift+V for copy paste
    { "keys": "ctrl+shift+c", "command": "copy"},
    { "keys": "ctrl+shift+v", "command": "paste"},


    // Disable Ctrl+Shift+C / Ctrl+Shift+V for copy paste
    { "keys": "ctrl+shift+c", "command": "unbound"},
    { "keys": "ctrl+shift+v", "command": "unbound"},
  ]
}

@ zadjii-msft sim, eu sei disso, e como desenvolvedor posso fazer isso. Mas se você quiser que o Terminal substitua o cmd.exe, será necessário corrigir isso.

Por curiosidade, que parte de

A partir de 1.0, os padrões incluem Ctrl + Shift + C / V como copiar e colar, e os novos usuários _também_ obterão Ctrl + C / V como copiar / colar em seus arquivos de configurações.

não estamos consertando isso?

Ctrl + Shift + C / V não é natural. Também não é o menu do botão direito? Acho o Windows Terminal útil, mas a falta do menu e do Ctrl + C / V está me fazendo reconsiderar minhas opções.

Sim, este tópico seguiu seu curso. Quem está inclinado a comentar: leia os quatro comentários mais recentes. Diz tudo que você precisa saber.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

mrmlnc picture mrmlnc  ·  3Comentários

warpdesign picture warpdesign  ·  3Comentários

waf picture waf  ·  3Comentários

NickITGuy picture NickITGuy  ·  3Comentários

zadjii-msft picture zadjii-msft  ·  3Comentários