zsh Cheatsheet

5.9

Atalhos, truques e keybindings essenciais do zsh para o seu terminal

Português: 2026-03-29

zsh é o shell padrão no macOS e está ganhando terreno sério no Linux, e com razão — ele pega tudo que o bash faz e adiciona completação mais inteligente, globbing melhor e um ecossistema de plugins que pode transformar seu terminal em algo genuinamente agradável de usar. Se você está usando zsh sem saber (obrigado, macOS Catalina), você está dirigindo um carro esportivo em primeira marcha.

O verdadeiro poder do zsh vive no seu editor de linha. Aqueles combos de Ctrl e Alt não são aleatórios — eles vêm da edição estilo Emacs, que é o modo padrão. Toda vez que você pressiona Ctrl-a para pular para o início de uma linha, está usando o mesmo binding que usuários do Emacs usam desde os anos 1970. Você também pode mudar para o modo vi se preferir, mas comece com os padrões. Eles são surpreendentemente bons quando você os internaliza.

Este cheatsheet foca no que vai te deixar mais rápido imediatamente: navegação na linha para parar de usar as setas, truques de histórico que evitam redigitar comandos, padrões de globbing que permitem ao zsh encontrar arquivos para você, e conhecimento suficiente de oh-my-zsh para montar um ambiente produtivo sem se afogar em opções. Estamos pulando o manual de 400 páginas e mantendo o que compensa diariamente.

Navegação na Linha

Esses funcionam no modo Emacs padrão (que é o que você está usando a menos que tenha explicitamente mudado para vi). Grave esses na memória muscular e suas mãos nunca vão sair da posição home.

Navegação na Linha
Ctrl-a
Pular para o início da linha
Ctrl-e
Pular para o final da linha
Alt-f
Avançar uma palavra
Alt-b
Voltar uma palavra
Ctrl-f
Avançar um caractere
Ctrl-b
Voltar um caractere
Ctrl-w
Deletar a palavra antes do cursor
Alt-d
Deletar a palavra depois do cursor
Ctrl-k
Recortar do cursor até o final da linha
Ctrl-u
Recortar do cursor até o início da linha
Ctrl-y
Colar o último texto recortado
Ctrl-t
Trocar os dois caracteres antes do cursor
Ctrl-l
Limpar a tela (mantém a linha atual)
Ctrl-_
Desfazer a última edição

Histórico

Seu histórico de shell é uma mina de ouro. O zsh mantém milhares de comandos por padrão, e esses atalhos ajudam a minerá-los eficientemente em vez de ficar apertando a seta para cima 47 vezes.

Histórico
Ctrl-r
Busca reversa no histórico (digite para filtrar)
Ctrl-s
Busca para frente no histórico
Ctrl-p
Comando anterior (mesmo que seta para cima)
Ctrl-n
Próximo comando (mesmo que seta para baixo)
!!
Repetir o último comando inteiro
sudo !!
Re-executar o último comando com sudo (salvação)
!$
Inserir o último argumento do comando anterior
!^
Inserir o primeiro argumento do comando anterior
!*
Inserir todos os argumentos do comando anterior
!<string>
Executar o comando mais recente que começa com <string>
!<n>
Executar o comando número <n> do histórico
history
Mostrar histórico recente de comandos
history -10
Mostrar os últimos 10 comandos
fc
Abrir o último comando no seu $EDITOR para edição

Globbing

É aqui que o zsh deixa o bash no chinelo. O globbing do zsh é tão poderoso que pode substituir o find para a maioria das buscas de arquivos do dia a dia. Sem pipes, sem subshells, apenas padrões.

Globbing
*
Corresponder qualquer string no diretório atual
**/*
Corresponder arquivos recursivamente em todos os subdiretórios
?
Corresponder qualquer caractere único
[abc]
Corresponder qualquer um dos caracteres listados
[a-z]
Corresponder qualquer caractere no intervalo
[^abc]
Corresponder qualquer caractere que NÃO está na lista
*.{js,ts}
Corresponder arquivos terminando em .js ou .ts (expansão de chaves)
**/*.py
Encontrar todos os arquivos Python recursivamente
*(.)
Corresponder apenas arquivos regulares (não diretórios)
*(/)
Corresponder apenas diretórios
*(@)
Corresponder apenas symlinks
*(m-7)
Arquivos modificados nos últimos 7 dias
*(Lk+100)
Arquivos maiores que 100 KB
*(om[1,5])
Os 5 arquivos modificados mais recentemente

Aliases

Aliases são como você faz o zsh parecer seu. Aqui estão os padrões que vale conhecer — os aliases específicos são por sua conta, mas essas formas desbloqueiam a maior produtividade.

Aliases
alias ll="ls -lah"
Alias simples de comando
alias -g G="| grep"
Alias global — funciona em qualquer lugar do comando (ls G foo)
alias -g L="| less"
Alias global para redirecionar para less
alias -g NE="2>/dev/null"
Alias global para suprimir erros
alias -s py=nvim
Alias de sufixo — digitar file.py abre no nvim
alias -s json=jq .
Alias de sufixo — digitar data.json formata bonito
alias -s md=glow
Alias de sufixo — renderizar arquivos markdown no terminal
unalias <name>
Remover um alias
alias
Listar todos os aliases ativos
which <command>
Mostrar para o que um comando ou alias resolve

Key Bindings

O editor de linha do zsh (zle) é totalmente customizável. Você pode revincular qualquer tecla a qualquer ação, e há centenas de widgets embutidos para escolher.

Key Bindings
bindkey
Listar todos os key bindings atuais
bindkey -e
Usar key bindings Emacs (o padrão)
bindkey -v
Mudar para key bindings vi
bindkey "^X^E" edit-command-line
Vincular Ctrl-x Ctrl-e para editar linha atual no $EDITOR
bindkey "^[[A" history-search-backward
Seta para cima busca histórico correspondendo ao input atual
bindkey "^[[B" history-search-forward
Seta para baixo busca histórico correspondendo ao input atual
bindkey "\e." insert-last-word
Alt-. insere a última palavra do comando anterior
bindkey -l
Listar keymaps disponíveis
zle -la
Listar todos os widgets zle disponíveis

Modo Vi

Se você é usuário de vim/nvim, o modo vi faz o zsh parecer sua casa. Você ganha modo normal, modo de inserção e a maioria dos motions que já conhece.

Modo Vi
bindkey -v
Habilitar modo vi
Esc
Mudar para modo normal
i
Entrar no modo de inserção
a
Entrar no modo de inserção depois do cursor
0
Pular para o início da linha (modo normal)
$
Pular para o final da linha (modo normal)
w / b
Avançar / voltar por palavra (modo normal)
dd
Deletar a linha inteira
dw
Deletar do cursor até o final da palavra
ci"
Alterar dentro de aspas (e outros objetos de texto)
v
Entrar no modo visual para selecionar texto
/
Buscar histórico de comandos (modo normal)

oh-my-zsh Essenciais

oh-my-zsh é o framework mais popular para zsh, e merece. Mas com mais de 300 plugins, é fácil inflar sua config. Aqui estão os plugins e padrões que realmente valem a pena carregar.

Configuração oh-my-zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
Instalar oh-my-zsh
plugins=(git z fzf)
Habilitar plugins no ~/.zshrc (lista separada por espaço)
ZSH_THEME="robbyrussell"
Definir seu tema no ~/.zshrc
omz update
Atualizar oh-my-zsh para a última versão
omz plugin list
Mostrar todos os plugins disponíveis
omz theme list
Mostrar todos os temas disponíveis
source ~/.zshrc
Recarregar sua config após alterações
Plugins Recomendados
git
Adiciona mais de 100 aliases para git (gst, gco, gp, gl, etc.)
z
Pular para diretórios frequentemente visitados por nome parcial
fzf
Busca fuzzy de arquivos, histórico e mais com Ctrl-r / Ctrl-t
zsh-autosuggestions
Sugestões estilo Fish baseadas no seu histórico (texto fantasma)
zsh-syntax-highlighting
Colore seus comandos enquanto digita — vermelho significa erro
sudo
Pressione Esc duas vezes para adicionar sudo ao comando atual ou anterior
copypath
Copiar o caminho do diretório atual para o clipboard
web-search
Buscar no Google/GitHub/Stack Overflow direto do terminal

Dicas

Adicione setopt AUTO_CD ao seu ~/.zshrc e você pode navegar por diretórios apenas digitando o caminho — sem precisar de cd. Digite .. para subir um diretório, ~/projects para ir para home. Quando se acostumar, digitar cd vai parecer desperdício de teclas.

O plugin zsh-autosuggestions é sem dúvida o maior ganho de produtividade que você pode adicionar. Ele mostra previsões em texto fantasma enquanto você digita, baseado no seu histórico. Pressione a seta para a direita para aceitar toda a sugestão, ou Alt-f para aceitar apenas a próxima palavra. Instale e se pergunte como viveu sem.

Use Ctrl-x Ctrl-e (depois de vincular com autoload -z edit-command-line && zle -N edit-command-line && bindkey '^X^E' edit-command-line) para abrir a linha de comando atual no seu $EDITOR. Comandos longos com pipes e loops são muito mais fáceis de compor no nvim do que em uma única linha de terminal.

Configure seu histórico corretamente. Adicione esses ao ~/.zshrc e você nunca mais vai perder um comando: HISTSIZE=50000, SAVEHIST=50000, setopt SHARE_HISTORY (sincronizar entre sessões), setopt HIST_IGNORE_DUPS (pular duplicatas consecutivas), setopt HIST_IGNORE_SPACE (prefixe com espaço para manter fora do histórico — útil para comandos com secrets).

O globbing recursivo do zsh (**/*) é poderoso o suficiente para substituir uso básico do find. Quer todos os arquivos TypeScript? ls **/*.ts. Quer deletar todos os .DS_Store? rm -f **/.DS_Store. É mais rápido de digitar e mais fácil de lembrar que find . -name "*.ts".

Se os combos com a tecla Alt não funcionam no seu terminal (comum no macOS), vá nas preferências do terminal e habilite "Use Option as Meta key." No iTerm2 está em Profiles > Keys. No Terminal.app está em Settings > Profiles > Keyboard. Sem isso, Alt-f, Alt-b e Alt-d chegam mortos.

Aliases de sufixo são um recurso subestimado do zsh. Adicione alias -s py=python3 ao seu ~/.zshrc e você pode executar um script Python apenas digitando o nome do arquivo: script.py em vez de python3 script.py. Funciona para qualquer extensão — mapeie .json para jq ., .md para seu visualizador de markdown, .log para less.

Related Tools