Quando copio algo na área de transferência e pressiono Ctrl+ Vno Bash, nada acontece; No entanto, clicar com o botão direito do mouse e selecionar Colar faz o trabalho.
Por quê? Existe algum problema razoável (tenho certeza que existe) por trás desse comportamento no Linux?
linux
bash
keyboard-shortcuts
copy-paste
Yasser Zamani
fonte
fonte
Shift
-Insert
também funcionaCtrl-Shift-V
pessoalmente.Respostas:
Nos dias de terminais físicos , não existiam pranchetas para toda a sessão, apenas alguns programas suportavam copiar / colar interno - geralmente sob o nome de "buffers" ou "kill rings" - e usavam várias teclas diferentes. Por exemplo, o shell bash usa CtrlKou CtrlUpara "matar" (cortar), CtrlY"puxar" (colar); isso vem do emacs editor .
CtrlCEm quase todos os lugares do Unix havia a tecla "interrupção" , usada para cancelar o programa ou operação atual. A CtrlVchave geralmente significava "inserção literal" - ou seja, insira o seguinte caractere literalmente sem executar nenhuma ação associada. Por exemplo, um normal Escmuda para o modo no comando vi editor, mas CtrlV, Escirá inserir o
ESC
caractere no documento.O uso de CtrlCcopiar e CtrlVcolar da área de transferência para toda a sessão foi introduzido pelo Mac OS em 1983 e pelo Microsoft Windows 3.x em 1990. (Versões anteriores do Windows (1.xe 2.x), bem como pelo IBM OS / 2 , suportou apenas as teclas IBM CUACtrlIns para copiar e ShiftInscolar; esses atalhos permanecem suportados por todas as versões do Windows.)
Quando as GUIs com suporte à área de transferência finalmente chegaram ao Unix, as Ctrlteclas já estavam em uso por muitos programas de terminal. Além disso, a interface gráfica X possuía mecanismos um tanto diferentes : "seleções" e "buffers de corte". Mesmo agora, você pode selecionar o texto em um programa e inseri-lo usando o botão do meio do mouse, sem nenhuma ação explícita de cópia.
Em suma, no momento em que o Xterm e o GNOME Terminal foram escritos (acho que você usa o último), CtrlV já tinham um significado completamente diferente por muitos anos e não podiam ser alterados. Além disso, um método alternativo de copiar texto - a "seleção" - já estava presente no X11, portanto, a ação explícita de copiar / colar provavelmente não era tão importante quanto seria no Windows. Isso significa que diferentes atalhos de teclado tiveram que ser selecionados - por exemplo, os programas de terminal mais modernos, como o GNOME Terminal, usam CtrlShiftCe CtrlShiftV. (Se você usar o Xterm, os mesmos atalhos podem ser adicionados manualmente usando o Xresm * vt100 * traduções Xresource. O Rxvt não possui essa opção.)
(A maioria dos kits de ferramentas X11 também suporta as teclas "copiar" e "colar" do CUA, que não entram em conflito com os programas do terminal. Infelizmente, as implementações são bastante inconsistentes - CtrlInscópias para a "área de transferência" na maioria dos programas (GTK, Qt4, mas ignoradas por Xaw); no entanto, ShiftInscola da "seleção primária" na maioria dos programas GTK e Qt4, mas da "área de transferência" no Firefox e dos buffers de corte agora obsoletos no Xaw agora obsoleto).
Tudo o que disse, alguns terminais ou consolas (em particular, o console do Windows 10) fazer apoiar essas chaves. Como o console do Windows sempre teve um modo "marcar / selecionar" separado, CtrlCagora também tem dois significados baseados no contexto - no modo regular ele envia uma interrupção, no modo de seleção copia para a área de transferência (como Entercostumava ser).
Enquanto isso, as ferramentas de linha de comando do Windows nunca eram realmente usadas CtrlV para nada, portanto era obrigatório "colar" sem incomodar muito. Fazer o mesmo em terminais tipo Unix, no entanto, seria mais problemático.
fonte
<C-v>
para ai
versão 3, mas não sabia exatamente por quê .Use CtrlShiftVpara colar.
Ctrl com outros caracteres geralmente é usado pelo shell para funções especiais.
fonte
bash
si só. Se você estiver fora de um ambiente da GUI ou se estiver usando outro termo emulador, isso provavelmente não funcionará. Não pense que este comando é portátil.Aqui estão as configurações de colar e copiar de uso geral com terminais populares:
gnome-terminal (mais popular no Linux)
Copiar : CtrlShiftC
Colar : CtrlShiftV
Nota : Selecionar para copiar e middle-clickcolar também funciona, mas usa uma área de transferência alternativa.
PuTTY (terminal mais popular no Windows)
Copie : (selecione com o mouse, nenhuma interação do teclado)
Colar : Right-click (ou de forma mais confiável: shiftRight-click)
Nota : Aplicativos que levam a entrada do mouse (como
vim
elinks
) pode roubar Right-click- shiftRight-clickserá sempre trabalhar em qualquer aplicativo.Cópia de terminal do OSX : AppleC
Colar : AppleV
Nota: os aplicativos que assumem o controle do mouse (como
vim
elinks
) podem substituir o que significa selecionar texto; nesse caso, a cópia não funcionará da maneira que você espera. Nesses casos, mantenha pressionado Controlenquanto arrasta o mouse para selecionar. A interação do mouse com os aplicativos é desativada por padrão nas configurações do terminal, para que a maioria das pessoas nem saiba disso.fonte
cmd.exe
mais popular que o PuTTY no Windows? :-)cmd.exe
não é um terminal SSH. Isso é muito verdade.cmd.exe
(e é o único caminho, se você não quiser abrir o menu> editar> colar) no modo de edição rápida . Não há nenhum atalho no prompt de comando pré-win10É uma tradição profundamente enraizada que a Ctrlchave junto com uma letra gere caracteres de controle ASCII encontrados subtraindo 64 do valor ASCII da letra maiúscula. Esse cálculo é mapeado Ctrl- Apara 1 e assim por diante. Por exemplo Ctrl- Ié Tabe Ctrl- Jé avanço de linha.
Não existe uma tradição semelhante para Ctrl- Shift. Ctrl- Shift- Vnão se espera que produza qualquer caractere específico.
Os emuladores de terminal devem suportar a tradição, passando de maneira transparente pela Ctrlconvenção, permitindo que ela apareça como entrada de caractere para os programas que estão sendo operados através dessa janela do terminal. Programas baseados em terminal mapeiam chaves de controle para comandos. Por exemplo, o Bash usa Ctrl- Vcomo um comando que significa "interpretar o próximo caractere literalmente". Isso permite incorporar um caractere de controle na linha de comando. Se o terminal roubar chaves de controle para uso próprio, esses comandos se tornam indisponíveis. Portanto, interceptar Ctrl- Vpara uma meta-função está fora de questão (pelo menos em uma configuração padrão).
Entretanto, os emuladores de terminal são livres para interceptar Ctrl- Shift- o Vque não é esperado que gere um caractere. Ctrl- Shift- Vnão é um padrão; é uma coisa do terminal Gnome (que pode estar em outros terminais).
Nos desktops Unix baseados em X, a convenção é que nenhum comando é necessário para copiar. Você acabou de selecionar o texto. E o botão do meio cola esse texto em outro lugar. Você verá que ele funciona no Xterm, no Gnome Terminal e no Firefox.
Ctrl- Vé uma convenção do Microsoft Windows, que é uma imitação de Apple- Vdo Macintosh.
fonte
<kbd>
tags em postagens futuras.Ctrl-A
é1
. Como posso tentar isso? Meu terminal Gnome não faz nada quando pressionoCtrl-A
.Para mim, a maneira mais simples de copiar e colar no shell é:
Selecione o código desejado e cole-o clicando no mouse-middle-key
fonte
xdotool click 2
para emular o clique do terceiro botão. Então, em qualquer ambiente de gerenciador de janelas / área de trabalho em que você esteja, você poderá vincular esse script a uma chave - digamosmod
i
(para inserção) ou a qualquer combinação de teclas que você possa ter disponível (ou qualquer modificação que possa significar - o que realmente depende de onde você deve vincular isso)Podemos usar o botão Inserir teclado para copiar e colar (nos teclados antigos, pode estar faltando)
Copiar : CtrlInsert
Colar :CtrlShiftInsert
fonte
você também pode usar o botão do meio de um mouse se estiver com preguiça e selecionar um comando em um documento de texto, script ou web ou fórum. Depois de selecionar o comando pretendido, simplesmente vá para o seu terminal e clique no botão do meio do mouse. Eu uso esse método como eu uso o linux de filhote, que parece não suportar o comportamento normal de clicar e colar com o botão direito. isso acontece em uma janela de tratamento de arquivos, mas não em uma janela de terminal. não sei por que, mas estou quieto satisfeito por ter descoberto o método do botão do meio, muito útil! ;-)
fonte