Selecionando texto no terminal sem usar o mouse


68

Estou prestes a pressionar enter para executar um comando no terminal, mas antes de fazer isso, quero copiar o comando para a área de transferência sem usar o mouse.

Quão?

Se você estiver em outro lugar que não seja o terminal, Ctrl+ Homefaz.

Existe uma maneira de selecionar arbitrariamente um texto como esse no terminal?

EDITADO:

  • suponha que o uso de outros programas como esse screennão seja uma boa alternativa
  • o texto deve ser colado fora do terminal, para que Ctrl+ ye sequências semelhantes não o resolvam

11
Você quer dizer Ctrl-Shift-Home?
— Caracol mecânico

Shift-Home copia para o início da linha. Ctrl-Shift-Home copia para o início da página.
— Strapakowsky

Shift-Home e Ctrl-Shift-Home fazem o mesmo por mim (pule para o início do terminal) e nenhum deles parece copiar nada a ser colado por Ctrl-Y ou Ctrl-Shift-V (nem selecione). Mas funciona no editor de texto, não copiando, apenas selecionando. Usando o OpenSUSE Leap 15 na caixa virtual. Todas as outras associações de teclas mencionadas nas respostas funcionam.
— Brambor

Respostas:


16

Vincule o seguinte atalho:

bind '"\C-p": "\C-e\C-u xsel <<"EOF"\n\C-y\nEOF\n\C-y"'

Agora, depois de usar Crtl+, Psua linha será copiada para a área de transferência. Você pode colá-lo no terminal usando:

xsel

E em qualquer aplicativo X usando o botão do meio do mouse ou Shift+ Insert.


Eu quero evitar o uso do mouse. É possível colá-lo com ctrl + shift + v em vez do botão do meio do mouse?
— precisa saber é o seguinte

@ MrGigu, isso usa uma área de transferência diferente (veja aqui ). Você precisa usar outro atalho. Por padrão, ele deve ser Shift + Inserção (ver aqui )
— Nykakin

Oh obrigado, shift + insert funciona! não sabia que você poderia colar com este comando.
— precisa saber é o seguinte

Alguma explicação sobre o que realmente está acontecendo aqui?
— Alexander

Ou use xsel -bpara usar a área de transferência padrão, ou seja, a que usa Ctrl + V / Ctrl + Shift + V. Também é importante notar que esse método falha em comandos de várias linhas.
— Wjandrea

27

Se você estiver usando um dos shells que compreendem as chaves do emacs (bash, csh etc.), poderá copiar o comando atual:

  1. control-A levará você ao início da linha.

  2. control-K matará toda a linha que você acabou de inserir.

  3. control-Y puxará o texto de volta.

Depois, você pode control-Ypuxar o texto de volta para inseri-lo como entrada no editor de linha de comando do shell.

Veja man bashe, quando aparecer, digite /emacsseguido de alguns n(a seguir) para avançar para a seção READLINE.


Eu sabia disso, mas quero colar fora do terminal. Editado para esclarecimentos.
— 31413 Strapakowsky

3
control-Upode cortar o comando a partir do final do mesmo directamente
— vstepaniuk

11
O segundo comando mudou minha vida.
— krishna

10

O mais próximo que consigo pensar é Ctrl+ u, Ctrl+ y
Isso excluiria do cursor até o início da linha e depois colaria no buffer da linha de leitura. Porém, isso não é exatamente o mesmo que a área de transferência, mas você poderá colar dentro do shell, se é isso que precisa.


Eu sabia disso, mas quero colar fora do terminal. Editado para esclarecimentos.
— Strapakowsky

8

Existe um programa chamado tela. Ele cria um sistema de janelas com texto que permite alternar entre várias instâncias. Mas também permite que você selecione o texto.

sudo apt-get install screen

Esse comando o instala.

Então digite screen

Você usa ctr-a para iniciar a sequência de comandos. Em seguida, pressione esc e seu cursor se moverá em qualquer direção. Pressione Enter para iniciar a seleção de texto, vá para o ponto final e pressione Enter novamente. Isso será copiado para o buffer.

Então ctr-a e então} colará

Mais detalhes sobre outros comandos aqui http://www.kuro5hin.org/story/2004/3/9/16838/14935


Boa sugestão, mas eu não gosto screenpor diferentes razões, então assuma o terminal Ubuntu normal. Editou minha pergunta para esclarecimento.
— 31413 Strapakowsky

11
Isso deve ser marcado como a resposta correta IMHO.
— precisa saber é o seguinte

2

Se você estiver dentro do vim, poderá selecionar visualmente uma ou mais linhas com Shift+ ve usar uma encadernação, por exemplo yy, para canalizar a seleção para o xclip .

Adicione a ligação ao seu vimrc:

vnoremap yy :w !xclip -selection clipboard<CR><CR>

Isso requer a instalação do xclip , pois está no repositório Debian / Ubuntu aptitude.

xcliparmazena stdin, com a -selection clipboardopção também empurra stdin para a área de transferência do sistema.

Portanto, você também pode usar de xclipmaneira genérica a partir do terminal, por exemplo, para copiar um arquivo inteiro para a área de transferência do sistema:

cat myfile | xclip -selection clipboard

Se você também pode, opcionalmente, criar um alias, como:

alias cb="xclip -selection clipboard" 

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.