Atalhos do Terminal: Keybindings do Readline que Você Precisa

Atalhos do Terminal: Keybindings do Readline que Você Precisa

O que você vai conseguir fazer

  • Agilizar o terminal com atalhos como Ctrl+A e Ctrl+R
  • Recuperar rapidamente comandos que você já digitou

Pré-requisitos (leia estes primeiro)

Seu Terminal Pode Ser Muito Mais Rápido

Você erra a digitação de um comando e lá vai você, batendo nas setas para voltar tecla por tecla. Só mover o cursor para lá e para cá já consome tempo. Redigitar aquele comando longo que você executou há pouco é igualmente chato.

Esses movimentos lentos desaparecem assim que você aprende alguns atalhos (keybindings: combinações fixas de teclas que disparam uma ação).

Neste guia, Lina e o veterano Linny percorrem juntos os atalhos do Readline que aceleram a entrada de comandos no terminalUm programa interativo que interpreta os comandos digitados e os executa.. As mesmas teclas funcionam tanto no bash quanto no zsh (bash e zsh são shells — o programa que recebe os comandos que você digita e os executa).

O que Você Vai Aprender

  • Que esses atalhos vêm de uma biblioteca chamada Readline
  • Como pular para o início ou fim de uma linha instantaneamente (Ctrl+A / Ctrl+E)
  • Como apagar entrada em massa (Ctrl+U / Ctrl+K / Ctrl+W)
  • Como pesquisar e reutilizar comandos anteriores com Ctrl+R
  • Um resumo rápido que você pode começar a usar hoje
  • Um mini exercício prático para fixar o que você aprendeu

1. De Onde Vêm Esses Atalhos?

Conclusão: Atalhos como Ctrl+A não são específicos do bash. Eles vêm do Readline, uma biblioteca de edição de linha. Por isso funcionam em muitos shells.

Lina: Veterano Linny, quando preciso mover o cursor no meio de um comando, fico amassando as teclas de seta. É muito lento...
Veterano Linny: Um atalho faz isso instantaneamente. E tem mais: esse atalho não é uma funcionalidade do bash.
Lina: Não é do bash?
Veterano Linny: Isso. A parte que digita, apaga e move o cursor na linha de comando é gerenciada por um componente compartilhado chamado Readline. Ele também é conhecido como biblioteca de edição de linha — cuida de tudo relacionado àquela única linha de entrada. O bash e a maioria das configurações do zsh herdam esses keybindings tal como são.
Lina: Então uma vez que eu os aprenda, posso usá-los em vários lugares.
Veterano Linny: Exatamente. As teclas que você aprende hoje ainda funcionam em um servidor que você acessa via SSH (uma forma de fazer login remotamente em outro computador). Aprenda uma vez, e elas são suas para sempre.

Readline é o "editor de linha"

O Readline gerencia aquela única linha de texto de comando: inserir, editar, recuperar do histórico. Por padrão ele usa os keybindings no estilo Emacs, por isso tantos atalhos usam Ctrl.

2. Pular para o Início ou Fim da Linha Instantaneamente

Conclusão: Ctrl+A pula para o início da linha. Ctrl+E pula para o fim. Chega de apertar as setas para corrigir o início de um comando longo.

Lina: O que devo aprender primeiro?
Veterano Linny: A movimentação do cursor traz o maior ganho. Digamos que você esqueceu o sudo no início de um comando longo. Ctrl+A te leva ao início com uma única tecla.
Lina: Como vou lembrar do A?
Veterano Linny: Pense no A como o Antes (início) da linha e no E como o fim (End em inglês). Experimente digitar um comando longo, mas ainda não aperte Enter.
echo this is an example of a very long command
Tecla Ação Dica de memorização
Ctrl+A Mover para o início da linha Antes (início)
Ctrl+E Mover para o fim da linha End (fim)
Ctrl+F Um caractere à direita Forward (avançar)
Ctrl+B Um caractere à esquerda Backward (recuar)
Alt+F Uma palavra à direita Forward por palavra
Alt+B Uma palavra à esquerda Backward por palavra

As setas funcionam bem para um único caractere. Mas aprender os saltos por palavra Alt+F / Alt+B reduz o número de teclas necessárias para corrigir um caminhoUma sequência de texto que descreve a localização de um arquivo ou diretório. ou uma opção.

No Terminal padrão do macOS, a tecla Alt (Option) às vezes não funciona de primeira. Nesse caso, aperte Esc e depois F para o mesmo efeito.

3. Como Apagar Erros em Massa

Conclusão: Ctrl+U apaga tudo antes do cursor. Ctrl+K apaga tudo depois. Ctrl+W apaga a palavra anterior. Você pode aposentar a tecla Backspace.

Lina: Quando erro a digitação de um comando, fico segurando o Backspace até apagar tudo...
Veterano Linny: Vamos aposentar esse hábito. Comece pelo Ctrl+U. Ele limpa tudo antes do cursor com um único toque.
Lina: Então, uma vez eu queria apagar só uma palavra no meio de um comando longo, mas apertei Ctrl+U por engano. Tudo que eu tinha digitado sumiu. Entrei em pânico...
Veterano Linny: Esse é um deslize clássico. Quando o cursor está no fim da linha, Ctrl+U apaga "tudo que você digitou até ali" — ou seja, tudo.
Lina: Ah, agora faz sentido...! Então se eu só quiser apagar uma palavra, devo usar outra tecla?
Veterano Linny: Isso. Para apagar só a palavra antes do cursor, use Ctrl+W. Aqui, "palavra" significa um bloco separado por espaços.
Lina: E o que acontece com um caminho como /home/lina/Documents?
Veterano Linny: Um caminho não tem espaços. Por isso ele conta como um único bloco, e tudo é apagado de uma vez. Não apaga "um nível de diretórioUm local que organiza arquivos. É a mesma ideia da "pasta" do Windows ou macOS. por vez" a cada / — fique atenta a isso.
Lina: E se eu realmente quiser limpar a linha inteira?
Veterano Linny: Aperte Ctrl+A para ir ao início, depois Ctrl+K — isso limpa tudo com certeza. Ctrl+U bem no início da linha não faz nada, aliás, porque não há nada antes do cursor para apagar.
Tecla Ação
Ctrl+U Apaga tudo antes do cursor
Ctrl+K Apaga tudo depois do cursor
Ctrl+W Apaga a palavra (bloco separado por espaços) antes do cursor
Ctrl+Y Cola de volta o que você acabou de apagar

Quanto o Ctrl+U apaga depende do seu shell

No bash, Ctrl+U apaga apenas o que está antes do cursor. Na configuração padrão do zsh, ele apaga a linha inteira, independente da posição do cursor. Teste primeiro com uma entrada curta e veja com seus próprios olhos até onde ele apaga.

Cortar e colar são um par

O texto removido com Ctrl+U / Ctrl+K / Ctrl+W é armazenado em um buffer chamado "kill ring". Ctrl+Y (Yank) cola de volta imediatamente. Apagou algo por engano? Não precisa entrar em pânico.

4. Como Reutilizar um Comando que Você Já Executou

Conclusão: Ctrl+R pesquisa o histórico em ordem inversa. Digite parte de uma palavra-chave e recupere um comando longo do passado instantaneamente.

Lina: Aquele comando longo do docker de ontem — preciso mesmo redigitar tudo?
Veterano Linny: É para isso que serve o Ctrl+R. É a pesquisa no histórico: encontra comandos anteriores por palavra-chave. Aperte Ctrl+R, depois digite parte do comando, como docker.
Lina: Ah! O comando de ontem apareceu na hora!
Veterano Linny: Viu? Aperte Enter para executá-lo como está. Aperte Ctrl+R novamente para uma correspondência mais antiga. Ou use as setas / Ctrl+E para editá-lo antes de executar. Para cancelar, aperte Ctrl+G ou Ctrl+C.
(reverse-i-search)`docker': docker compose up -d --build

O fluxo do Ctrl+R

  1. Aperte Ctrl+R (o promptUm símbolo (como $ ou #) exibido quando o shell está esperando sua entrada. mostra (reverse-i-search))
  2. Digite parte do comando (correspondências parciais aparecem)
  3. Aperte Ctrl+R novamente para correspondências mais antigas
  4. Enter para executar / Ctrl+G para cancelar

As setas para cima/baixo, ou Ctrl+P (Previous) / Ctrl+N (Next), percorrem o histórico um comando de cada vez. Quando você só quer ajustar o último comando, isso é mais rápido.

5. Resetar a Tela e Sua Entrada

Conclusão: Ctrl+L limpa a tela. Ctrl+C interrompe um comando em execução. Ctrl+D sinaliza fim da entrada. Esses são seus atalhos de saída quando algo parece travado.

Lina: Quando a tela fica cheia de saída e fica difícil de ler, o que eu faço?
Veterano Linny: Ctrl+L limpa tudo na hora. É o mesmo que o comando clear, mas mais rápido do que digitá-lo. E se um comando parece travado e não termina, Ctrl+C o interrompe.
Lina: Na verdade, uma vez achei que um comando estava travado, então apertei Ctrl+D. Meu terminal inteiro fechou, e eu entrei em pânico...
Veterano Linny: Essa é uma confusão comum. Ctrl+D sinaliza "terminei de digitar" — não tem efeito nenhum sobre um comando que já está em execução.
Lina: Eu realmente achava que era a tecla de "parar"...!
Veterano Linny: Aqui vai uma regra simples. Quer parar algo? Ctrl+C. Não tem mais nada para digitar? Ctrl+D. Em um prompt vazio, Ctrl+D te desconecta (o shell fecha). Você também o usa para terminar a entrada quando, por exemplo, o cat está esperando você digitar.
Tecla Ação
Ctrl+L Limpar a tela (igual ao clear)
Ctrl+C Interromper o comando em execução
Ctrl+D Fim da entrada / sair do shell em prompt vazio

Ctrl+C e Ctrl+D fazem coisas diferentes. Ctrl+C significa "parar o que está rodando agora". Ctrl+D significa "terminei de digitar". Se algo parece travado, tente Ctrl+C primeiro.

6. Os Atalhos para Aprender Primeiro

Conclusão: Você não precisa de todos de uma vez. Treine apenas cinco — início/fim de linha, apagar linha e pesquisa no histórico. Só isso já reduz o tempo que cada comando leva para ser digitado.

Lina: São muitos. Não sei por onde começar.
Veterano Linny: Comece com cinco. Percorra a tabela abaixo e use-os conscientemente no trabalho de terminal de hoje. Dentro de uma semana seus dedos vão se mover sozinhos.
Prioridade Tecla Ação
1 Ctrl+A Mover para o início da linha
2 Ctrl+E Mover para o fim da linha
3 Ctrl+U Apagar tudo antes do cursor
4 Ctrl+R Pesquisar o histórico em ordem inversa
5 Ctrl+L Limpar a tela

Os atalhos só fixam quando você os usa em comandos reais. Experimente na prática em Como Usar o Terminal.

7. Mini Exercícios - Coloque a Mão na Massa

Lina: Quero testar de verdade o que aprendi!
Veterano Linny: Boa. Vamos testar essas três coisas em um terminal de verdade. Tente cada uma sozinha antes de conferir a resposta.

Tarefa 1: Digite um comando longo (ainda não aperte Enter) e mova o cursor para o início e o fim da linha o mais rápido possível.

Ver Dica 1 (Direção)

Você não precisa ficar apertando as setas repetidamente. Uma única tecla pode pular direto para qualquer uma das pontas da linha.

Ver Dica 2 (Nome das Teclas)

Use Ctrl+A para o início da linha e Ctrl+E para o fim.

Ver a Resposta

Digite um comando longo com echo (ainda não aperte Enter). Ctrl+A leva o cursor ao início da linha. Ctrl+E leva ao fim. Os dois acontecem instantaneamente.

Tarefa 2: Posicione o cursor no meio de um comando digitado e apague "só o que vem antes" e "só o que vem depois" separadamente.

Ver Dica 1 (Direção)

Em vez de segurar o Backspace, existem teclas dedicadas que limpam tudo antes do cursor, e tudo depois dele, com um único toque cada.

Ver Dica 2 (Nome das Teclas)

Ctrl+U apaga antes do cursor. Ctrl+K apaga depois dele.

Ver a Resposta

Com o cursor no meio de um comando, Ctrl+U apaga tudo antes dele. Ctrl+K (na mesma posição) apaga tudo depois. Ctrl+Y cola o texto apagado de volta.

Tarefa 3: Recupere um comando que você digitou antes usando a pesquisa no histórico.

Ver Dica 1 (Direção)

Você não precisa lembrar o comando inteiro. Uma tecla permite encontrar um comando anterior digitando só um fragmento dele.

Ver Dica 2 (Nome das Teclas)

Aperte Ctrl+R, depois digite parte do comando.

Ver a Resposta

Aperte Ctrl+R e o prompt mostra (reverse-i-search). Digite parte do comando (por exemplo, echo), e um comando anterior correspondente aparece. Aperte Enter para executá-lo, ou Ctrl+G para cancelar.

Resumo

  • Esses atalhos Ctrl vêm da biblioteca Readline, por isso funcionam tanto no bash quanto no zsh
  • Ctrl+A / Ctrl+E pulam instantaneamente para o início e o fim da linha
  • Ctrl+U / Ctrl+K / Ctrl+W apagam entrada em massa, e Ctrl+Y cola de volta
  • Ctrl+U apaga tudo antes do cursor — cuidado, ele pode apagar mais do que você espera dependendo da posição do cursor
  • Ctrl+R pesquisa comandos anteriores por palavra-chave para reutilizá-los
  • Ctrl+L (limpar), Ctrl+C (interromper) e Ctrl+D (fim de entrada) são bons de conhecer
  • Comece com apenas cinco e aprenda usando-os

Próxima Leitura