Seu terminal pode ser muito mais produtivo com Zsh
Se você passa boa parte do dia no terminal, vale muito a pena investir alguns minutos configurando o Zsh com Oh My Zsh. A diferença na produtividade é real — autocomplete inteligente, highlight de sintaxe, histórico gigante e plugins que evitam você digitar a mesma coisa mil vezes.
Esse post é baseado na minha configuração pessoal do .zshrc. Bora ver o que tem dentro.
Instalando o Zsh e Oh My Zsh
# Instalar o Zsh (Debian/Ubuntu)
sudo apt install zsh
# Definir como shell padrão
chsh -s $(which zsh)
# Instalar o Oh My Zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
Tema
O tema padrão que uso é o robbyrussell — simples, limpo e mostra o branch do git direto no prompt.
ZSH_THEME="robbyrussell"
Se quiser algo mais visual com ícones e informações de contexto (k8s, cloud, etc.), vale testar o Powerlevel10k:
# Instalar o Powerlevel10k
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git \
${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
# No .zshrc:
ZSH_THEME="powerlevel10k/powerlevel10k"
Plugins essenciais
plugins=(
git
dnf
zsh-syntax-highlighting
zsh-autosuggestions
)
zsh-autosuggestions
Sugere comandos em cinza enquanto você digita, baseado no seu histórico. Pressione → para aceitar. Um dos plugins mais úteis que existem.
git clone https://github.com/zsh-users/zsh-autosuggestions \
${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
zsh-syntax-highlighting
Colore os comandos em tempo real — verde se o comando existe, vermelho se não existe. Evita muito erro de digitação.
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git \
${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
git
Plugin built-in do Oh My Zsh. Traz dezenas de aliases prontos:
gst # git status
gco # git checkout
gcmsg # git commit -m
gp # git push
gl # git pull
glog # git log bonito
Histórico gigante e inteligente
Essa é uma das partes que mais uso. Um histórico bem configurado vale ouro — principalmente quando você precisa lembrar aquele comando raro que rodou meses atrás.
HISTFILE=${ZDOTDIR:-$HOME}/.zsh_history
SAVEHIST=1000000
HISTSIZE=1000000
HIST_STAMPS="yyyy-mm-dd"
setopt INC_APPEND_HISTORY # Grava no arquivo imediatamente (não só ao fechar o shell)
setopt SHARE_HISTORY # Compartilha histórico entre todas as sessões abertas
setopt HIST_EXPIRE_DUPS_FIRST # Remove duplicatas primeiro quando o histórico encher
setopt HIST_IGNORE_DUPS # Não grava se o comando foi o mesmo do anterior
setopt HIST_IGNORE_ALL_DUPS # Remove entradas antigas se o mesmo comando for repetido
setopt HIST_FIND_NO_DUPS # Não mostra duplicatas ao navegar com ↑
setopt HIST_IGNORE_SPACE # Não grava comandos que começam com espaço (útil para senhas)
setopt HIST_SAVE_NO_DUPS # Não escreve duplicatas no arquivo de histórico
setopt HIST_REDUCE_BLANKS # Remove espaços desnecessários antes de gravar
alias history="history 0" # Mostra o histórico completo (sem limite de linhas)
O HIST_IGNORE_SPACE é especialmente útil: qualquer comando precedido de espaço não entra no histórico — ótimo pra quando você cola uma senha ou token diretamente no terminal.
fzf — busca fuzzy no histórico
O fzf transforma o Ctrl+R em uma busca interativa e fuzzy pelo histórico inteiro. Essencial.
# Instalar
sudo apt install fzf
# ou via git
git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf && ~/.fzf/install
No .zshrc:
[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh
Depois é só apertar Ctrl+R e digitar qualquer trecho do comando que você procura.
Meu .zshrc completo
export ZSH="$HOME/.oh-my-zsh"
ZSH_THEME="robbyrussell"
HISTFILE=${ZDOTDIR:-$HOME}/.zsh_history
SAVEHIST=1000000
HISTSIZE=1000000
HIST_STAMPS="yyyy-mm-dd"
setopt INC_APPEND_HISTORY
setopt SHARE_HISTORY
setopt HIST_EXPIRE_DUPS_FIRST
setopt HIST_IGNORE_DUPS
setopt HIST_IGNORE_ALL_DUPS
setopt HIST_FIND_NO_DUPS
setopt HIST_IGNORE_SPACE
setopt HIST_SAVE_NO_DUPS
setopt HIST_REDUCE_BLANKS
alias history="history 0"
plugins=(
git
dnf
zsh-syntax-highlighting
zsh-autosuggestions
)
source $ZSH/oh-my-zsh.sh
[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
export PATH="$HOME/.local/bin:$PATH"
Com isso você já tem um terminal muito mais agradável de usar. Os plugins de autosuggestions e syntax highlighting sozinhos já valem a instalação. O histórico inteligente é o tipo de coisa que você sente falta quando usa uma máquina sem ele.