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.