DEV Community

Cover image for Terminal de Ultra Performance: Zsh com o Poder do Rust no macOS
Francisco Júnior
Francisco Júnior

Posted on

Terminal de Ultra Performance: Zsh com o Poder do Rust no macOS

Este tutorial transforma seu Terminal.app nativo em um ambiente de alta performance, replicando a usabilidade inteligente do Fish Shell dentro do Zsh padrão do macOS, utilizando ferramentas modernas escritas em Rust.

🚀 Por que essa stack?

A chegada dos chips M4 exige ferramentas que aproveitem a arquitetura Apple Silicon. Substituiremos utilitários legados de 30 anos por alternativas em Rust, garantindo um terminal que abre em milissegundos e oferece preenchimento automático inteligente.


Passo 1: Fundação (Homebrew e Fontes)

Primeiro, instalamos o gerenciador de pacotes e a fonte necessária para renderizar ícones e glifos (Nerd Fonts).

  1. Instale o Homebrew:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Enter fullscreen mode Exit fullscreen mode
  1. Ative o Homebrew no path atual:
eval "$(/opt/homebrew/bin/brew shellenv)"

Enter fullscreen mode Exit fullscreen mode
  1. Instale a JetBrains Mono Nerd Font: Recomendada por ser monoespaçada, legível e ter suporte a ligaduras de código.
brew install --cask font-jetbrains-mono-nerd-font

Enter fullscreen mode Exit fullscreen mode

💡 Ação Necessária: Após instalar, abra as configurações do Terminal (Cmd + ,) -> Profiles -> Selecione o perfil -> aba Text. Em Font, clique em "Change" e selecione JetBrainsMono Nerd Font.


Passo 2: Interface Visual (Tema Dracula)

O Terminal nativo precisa de um arquivo de configuração para cores precisas.

  1. Baixe o tema:
git clone https://github.com/dracula/terminal-app.git ~/dracula-terminal

Enter fullscreen mode Exit fullscreen mode
  1. Importe no Terminal:
  2. Abra Settings (Cmd + ,) > Profiles.
  3. Clique no ícone ... (inferior esquerdo) > Import.
  4. Selecione o arquivo Dracula.terminal em ~/dracula-terminal.
  5. Clique no botão Default para torná-lo seu perfil padrão.

Passo 3: Ferramentas Modernas (Rust Stack)

Instalaremos o núcleo de performance. Estas ferramentas substituem comandos antigos como ls, cd e cat.

brew install antidote starship zoxide fzf bat eza fd ripgrep uv

Enter fullscreen mode Exit fullscreen mode
Ferramenta O que faz?
antidote Gerenciador de plugins Zsh ultra-rápido.
uv Gerenciador Python (substituto do pip/poetry) em Rust.
zoxide Navegação inteligente (o novo cd).
eza Listagem de arquivos com ícones (o novo ls).
bat Leitor de arquivos com syntax highlighting (o novo cat).
fzf Buscador fuzzy para histórico e arquivos.

Passo 4: Configuração dos Plugins (Antidote)

O Antidote lê um arquivo .txt simples e gera um script Zsh otimizado.

  1. Crie o arquivo de lista de plugins:
nano ~/.zsh_plugins.txt

Enter fullscreen mode Exit fullscreen mode
  1. Cole o conteúdo abaixo:
# --- Core do OhMyZsh (Essencial) ---
ohmyzsh/ohmyzsh path:lib
ohmyzsh/ohmyzsh path:plugins/git
ohmyzsh/ohmyzsh path:plugins/sudo
ohmyzsh/ohmyzsh path:plugins/command-not-found
ohmyzsh/ohmyzsh path:plugins/extract

# --- Utilitários Fish-like ---
zsh-users/zsh-completions
zsh-users/zsh-autosuggestions

# --- Menu de Tabulação Moderno ---
Aloxaf/fzf-tab

# --- Syntax Highlighting (DEVE SER O ÚLTIMO) ---
zsh-users/zsh-syntax-highlighting

Enter fullscreen mode Exit fullscreen mode

Passo 5: O Arquivo Mestre (.zshrc)

Este é o coração da sua configuração. Ele integra todas as ferramentas instaladas.

  1. Edite o arquivo: nano ~/.zshrc
  2. Substitua todo o conteúdo pelo bloco abaixo:
# --- 1. Inicialização do Homebrew ---
eval "$(/opt/homebrew/bin/brew shellenv)"

# --- 2. Sistema de Completar ---
autoload -Uz compinit
compinit

# --- 3. Carregamento de Plugins (Antidote) ---
zstyle ':antidote:bundle' use-friendly-names on
ANTIDOTE_HOME=$(brew --prefix)/opt/antidote
source ${ANTIDOTE_HOME}/share/antidote/antidote.zsh
antidote load ${HOME}/.zsh_plugins.txt

# --- 4. Comportamento Fish-like ---
export ZSH_AUTOSUGGEST_USE_ASYNC=1
export ZSH_AUTOSUGGEST_STRATEGY=(history completion)
bindkey '^ ' autosuggest-accept  # Ctrl+Space aceita sugestão
bindkey '^[[C' autosuggest-accept # Seta Direita aceita sugestão

# Menu de Tabulação com FZF
zstyle ':completion:*' menu no
zstyle ':fzf-tab:*' fzf-command fzf
zstyle ':fzf-tab:*' fzf-flags '--color=fg:#f8f8f2,bg:#282a36,hl:#bd93f9 --color=fg+:#f8f8f2,bg+:#44475a,hl+:#bd93f9'

# --- 5. Aliases Modernos ---
alias ls="eza --icons --group-directories-first"
alias ll="eza --icons --group-directories-first -l --git"
alias la="eza --icons --group-directories-first -la --git"
alias tree="eza --tree --icons"
alias cat="bat"
alias atualizar_meumac="brew update && brew upgrade && brew cleanup && antidote update && echo '✅ Sistema atualizado!'"

# --- 6. Ferramentas Rust ---
eval "$(zoxide init zsh)"
alias cd="z"

eval "$(fzf --zsh)"
export FZF_DEFAULT_COMMAND='fd --type f --strip-cwd-prefix --hidden --follow --exclude .git'

if [[ ":$PATH:" != *":$HOME/.local/bin:"* ]]; then
    export PATH="$HOME/.local/bin:$PATH"
fi
eval "$(uv generate-shell-completion zsh)"

# --- 7. Prompt (Starship) ---
eval "$(starship init zsh)"

Enter fullscreen mode Exit fullscreen mode

Passo 6: Configuração do Prompt (Starship)

O Starship é o prompt mais rápido do mercado. Vamos deixá-lo minimalista.

  1. Crie a config: mkdir -p ~/.config && nano ~/.config/starship.toml
  2. Adicione o conteúdo:
add_newline = true
command_timeout = 1000

[character]
success_symbol = "[➜](bold green)"
error_symbol = "[✗](bold red)"

[directory]
style = "bold cyan"
truncation_length = 3

[git_branch]
symbol = " "
style = "bold purple"

[python]
symbol = "🐍 "
style = "yellow"
detect_files = ["pyproject.toml", "requirements.txt", ".python-version", "uv.lock"]

[package]
disabled = true

Enter fullscreen mode Exit fullscreen mode

Passo 7: Tutorial Prático de Uso

1. Eza (O novo ls)

O eza traz cores semânticas. Arquivos novos no Git aparecem com status, e diretórios vêm sempre primeiro.

  • Tente: ll ou tree

2. Zoxide (O novo cd)

Ele aprende suas pastas favoritas. Se você costuma ir para ~/Documents/Projetos/ReactApp, basta digitar:

  • z ReactApp (de qualquer lugar!)
  • Use zi para abrir o modo interativo com busca.

3. UV (Python em esteroides)

Esqueça a lentidão do pip.

  • Criar Venv: uv venv (é instantâneo).
  • Rodar sem instalar: uv run --with requests script.py.

4. Manutenção

Criamos um alias mestre. Sempre que quiser atualizar tudo (Brew, pacotes e plugins do terminal), basta digitar:

  • atualizar_meumac

Gostou dessa stack? Deixe um comentário se você tiver alguma dúvida sobre a configuração no novo chip M4! ⚡

Top comments (0)