Nos dias de terminais físicos , não existiam pranchetas de sessão, apenas poucos programas suportavam cópia/colagem interna - frequentemente sob o nome de “buffers” ou “kill rings” - e usavam vários toques de teclas diferentes. Por exemplo, o bash shell usa CtrlK ou CtrlU para “kill” (cortar), CtrlY para “yank” (colar); isto vem de o editor emacs .
CtrlC em quase todo o Unix era a tecla “interrupt” , usada para cancelar o programa ou operação atual. A tecla CtrlV significava muitas vezes “inserir literalmente” - ou seja, inserir o seguinte caracter literalmente sem executar qualquer acção associada. Por exemplo, um Esc normal muda para modo de comando no editor vi, mas CtrlV, Esc irá inserir o caracter ESC
no documento.
A utilização de CtrlC para copiar e CtrlV para colar a partir da área de transferência da sessão foi introduzida pelo Mac OS em 1983 e Microsoft Windows 3.x em 1990. (Versões anteriores do Windows (1.x e 2.x), bem como IBM OS/2, só suportava as teclas IBM CUA CtrlIns para copiar e ShiftIns para colar; estes atalhos permanecem suportados por todas as versões do Windows)
Quando as GUIs com suporte de clipboard finalmente chegaram ao Unix, as teclas Ctrl já estavam em uso por muitos programas terminais. Além disso, a interface gráfica X tinha alguns mecanismos diferentes : “seleções” e “buffers de corte”. Mesmo agora você pode selecionar texto em um programa e inseri-lo usando o botão central do mouse, sem qualquer ação de cópia explícita.
Em resumo, no momento em que Xterm e GNOME Terminal foram escritos (estou supondo que você use o último), CtrlV já tinha um significado completamente diferente por muitos anos e não podia ser alterado. Além disso, um método alternativo de copiar texto - a “selecção” - já estava presente no X11, pelo que uma acção explícita de copiar/colar provavelmente não foi considerada tão importante como seria no Windows. Isto significa que tiveram de ser seleccionados diferentes atalhos de teclado - por exemplo, a maioria dos programas terminais modernos, como o GNOME Terminal, usam CtrlShiftC e CtrlShiftV. (Se usar Xterm, os mesmos atalhos podem ser adicionados manualmente usando o XTerm*vt100*translations Xresource. Rxvt não tem essa opção.)
(A maioria dos conjuntos de ferramentas X11 também suporta as teclas “copy” e “paste” da CUA, que não entram em conflito com os programas terminais. Infelizmente, as implementações são bastante inconsistentes - CtrlIns copia para a “prancheta” na maioria dos programas (GTK, Qt4, mas ignorado pelo Xaw); no entanto, ShiftIns cola da “selecção primária” na maioria dos programas GTK e Qt4, mas da “prancheta” no Firefox, e dos cut-buffers agora obsoletos no agora obsoleto Xaw. )
Dito isto, alguns terminais ou consolas (em particular, a consola Windows 10) do suportam estas teclas. Como a consola Windows sempre teve um modo “mark/select” separado, o CtrlC agora também tem dois significados baseados no contexto - em modo normal envia uma interrupção, em modo selectivo copia para a área de transferência (tal como o Enter costumava fazer).
Entretanto, as ferramentas de linha de comando do Windows nunca realmente utilizaram o CtrlV para nada, por isso estava obrigado a “colar” sem perturbar muito nada. Fazer o mesmo em terminais do tipo Unix, no entanto, seria mais problemático.