Apidog

Plataforma Colaborativa All-in-one para Desenvolvimento de API

Design de API

Documentação de API

Depuração de API

Mock de API

Testes Automatizados de API

Como Configurar uma Configuração de Zsh de Alto Desempenho

@apidog

@apidog

Updated on março 28, 2025

O Zsh (Z Shell) tornou-se cada vez mais popular entre os desenvolvedores devido aos seus recursos poderosos e extensas capacidades de personalização. Este guia irá orientá-lo na configuração de um Zsh rápido, eficiente e rico em recursos, que evita armadilhas comuns de desempenho.

💡
Ao otimizar sua experiência no terminal, vale a pena aprimorar também seu fluxo de trabalho de desenvolvimento de API. Se você é um desenvolvedor que trabalha com APIs, recomendo fortemente conferir Apidog como uma excelente alternativa ao Postman.

O Apidog combina documentação de API, depuração e testes automatizados em uma única plataforma, com uma interface mais intuitiva e melhores recursos de colaboração em equipe.

A funcionalidade de importação torna a transição do Postman tranquila, e muitos desenvolvedores relatam fluxos de trabalho mais rápidos com seus servidores fictícios e gerenciamento de ambientes. O nível gratuito é bastante generoso, tornando-o acessível para desenvolvedores individuais e pequenas equipes.

Dê uma chance ao Apidog junto com sua nova configuração do Zsh para um ambiente de desenvolvimento totalmente renovado!
button

Por que esta configuração é melhor

A abordagem que descreverei oferece várias vantagens em relação às configurações tradicionais:

  • Tempos de inicialização significativamente mais rápidos (0.03-0.07s vs 0.5-1.0s com o básico Oh My Zsh)
  • Gerenciamento moderno de plugins com melhores características de desempenho
  • Carregamento preguiçoso de componentes que consomem muitos recursos
  • Estrutura de configuração mais limpa e mais fácil de manter

Opções de Instalação

Você tem várias opções para o seu framework Zsh, cada uma com diferentes compensações:

Opção 1: Zinit + Powerlevel10k (Avançado, Melhor Desempenho)

Zinit é um poderoso gerenciador de plugins que permite o carregamento assíncrono e oferece desempenho excepcional.

  1. Instale o Zsh primeiro:
# Para Ubuntu/Debian
sudo apt install zsh

# Para macOS com Homebrew
brew install zsh

# Para Fedora
sudo dnf install zsh

2. Faça do Zsh seu shell padrão:

chsh -s $(which zsh)

3. Instale o Zinit:

bash -c "$(curl --fail --show-error --silent --location <https://raw.githubusercontent.com/zdharma-continuum/zinit/HEAD/scripts/install.sh>)"

4. Crie sua configuração .zshrc:

# Ative o prompt instantâneo do Powerlevel10k (faz o shell aparecer instantaneamente)
if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
  source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
fi

# Carregue o Zinit
source "$HOME/.local/share/zinit/zinit.git/zinit.zsh"

# Carregue o tema Powerlevel10k
zinit ice depth=1
zinit light romkatv/powerlevel10k

# Funcionalidade principal do zsh (histórico, conclusão)
zinit snippet OMZL::history.zsh
zinit snippet OMZL::completion.zsh
zinit snippet OMZL::key-bindings.zsh

# Plugins essenciais com carregamento assíncrono (modo turbo)
zinit wait lucid for \\\\
  atinit"zicompinit; zicdreplay" \\\\
    zdharma-continuum/fast-syntax-highlighting \\\\
  atload"_zsh_autosuggest_start" \\\\
    zsh-users/zsh-autosuggestions \\\\
  zdharma-continuum/history-search-multi-word

# Plugin Git do Oh My Zsh - carregado ao entrar em um repositório git
zinit ice wait lucid
zinit snippet OMZP::git

# Carregue o gerenciador de versão do Node apenas quando necessário
export NVM_LAZY_LOAD=true
export NVM_COMPLETION=true
zinit ice wait lucid
zinit light lukechilds/zsh-nvm

# Diretório inicial
cd ~/repos

# Carregue aliases de um arquivo separado para melhor organização
[[ -f ~/.zsh_aliases ]] && source ~/.zsh_aliases

# Configure o Powerlevel10k
POWERLEVEL9K_PROMPT_ADD_NEWLINE=true
POWERLEVEL9K_MODE='awesome-fontconfig'
POWERLEVEL9K_BATTERY_SHOW=false  # Desligue o status da bateria
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir vcs)
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status time background_jobs)

# Inicialize o Powerlevel10k
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh

5. Configure o Powerlevel10k:

Após reiniciar seu terminal, o assistente de configuração do Powerlevel10k será iniciado automaticamente. Siga as instruções para personalizar a aparência do seu prompt.

Se você precisar reconfigurar mais tarde, execute:

p10k configure

Opção 2: Zim (Mais simples, ainda rápido)

Zim é um framework Zsh mais amigável e ainda muito rápido, que oferece um ótimo equilíbrio entre recursos e desempenho.

  1. Instale o Zsh (mesmo que acima)
  2. Instale o Zim:
curl -fsSL <https://raw.githubusercontent.com/zimfw/install/master/install.zsh> | zsh

  1. Edite seu arquivo .zimrc para adicionar módulos:
# Principal
zmodule environment
zmodule git
zmodule input
zmodule termtitle
zmodule utility

# Prompt
zmodule romkatv/powerlevel10k

# Conclusão
zmodule zsh-users/zsh-completions
zmodule completion

# Módulos que devem ser inicializados por último
zmodule romkatv/zsh-defer  # Para carregamento assíncrono
zmodule zsh-users/zsh-syntax-highlighting
zmodule zsh-users/zsh-autosuggestions
zmodule zsh-users/zsh-history-substring-search

  1. Crie seu arquivo .zshrc:
# Ative o prompt instantâneo do Powerlevel10k
if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
  source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
fi

# Initialize zsh-defer para carregamento assíncrono
source ${ZIM_HOME}/modules/zsh-defer/zsh-defer.plugin.zsh

# Inicie o ZIM
if [[ ! ${ZIM_HOME}/init.zsh -nt ${ZDOTDIR:-${HOME}}/.zimrc ]]; then
  # Atualize o script de inicialização estática se não existir ou estiver desatualizado
  zsh-defer source ${ZIM_HOME}/zimfw.zsh init -q
fi
source ${ZIM_HOME}/init.zsh

# Customize as combinações de teclas
bindkey '^[[A' history-substring-search-up
bindkey '^[[B' history-substring-search-down

# Carregue com preguiça os gerenciadores de versão Node
if command -v fnm &> /dev/null; then
  zsh-defer eval "$(fnm env --use-on-cd)"  # Use fnm (opção mais rápida em relação ao nvm)
elif command -v nvm &> /dev/null; then
  zsh-defer source $(brew --prefix nvm)/nvm.sh  # Carregue o nvm apenas quando necessário
fi

# Diretório inicial
cd ~/repos

# Carregue aliases
[[ -f ~/.zsh_aliases ]] && source ~/.zsh_aliases

# Carregue a configuração do powerlevel10k
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh

Criando um Melhor Arquivo de Aliases

Em vez de incorporar todos os aliases diretamente em seu .zshrc, crie um arquivo .zsh_aliases separado para melhor organização:

# Crie um arquivo .zsh_aliases
touch ~/.zsh_aliases

Abaixo está uma versão melhorada dos aliases com melhor organização:

# Operações de arquivo
alias rmrf='rm -rf'
alias ls='ls -lart --color=auto'

# Navegação de diretório
alias r='cd ~/repos'
alias ..='cd ..'
alias ...='cd ../..'
alias ....='cd ../../..'

# Ambientes de desenvolvimento
alias c='code .'
alias s='cursor .'
alias e='exit'

# Operações Git
alias g='git'
alias gs='git status'
alias ga='git add .'
alias gc='git commit -m'
alias gagc='git add . && git commit -m'
alias gp='git fetch -p'
alias gcom='git checkout main'
alias gcol='git checkout -'
alias gb='git checkout -b'
alias gbl='git branch -a'
alias grv='git remote -v'
alias grb='npx git-removed-branches'
alias gcl='git clone'
alias gbr='git browse'
alias pp='git pull --rebase && git push'

# Gerenciamento de pacotes - npm
alias ni='npm i'
alias nid='npm i -D'
alias nig='npm i -g'
alias nr='npm run'
alias nrb='npm run build'
alias nrd='npm run dev'
alias nrs='npm run start'
alias nlg='npm list -g --depth=0'

# Gerenciamento de pacotes - yarn
alias ya='yarn add'
alias yad='yarn add -D'
alias yb='yarn build'
alias yd='yarn dev'
alias ys='yarn start'
alias yyb='yarn && yarn build'
alias yyd='yarn && yarn dev'
alias ylg='yarn global list'

# Gerenciamento de pacotes - pnpm
alias pi='pnpm i'
alias pid='pnpm i -D'
alias prb='pnpm run build'
alias prd='pnpm run dev'
alias prs='pnpm run start'
alias plg='pnpm list -g --depth=0'
alias pc='pnpm create'

# Ferramentas de desenvolvimento
alias kill='npx kill-port'
alias di='echo dotenv > .envrc && touch .env && direnv allow'
alias tdl="tree -a -I 'node_modules|.svelte-kit|.git' --dirsfirst"

Dicas de Otimização de Desempenho

  1. Use carregamento preguiçoso para componentes pesados
  • Gerenciadores de versão Node (nvm, fnm) são principais culpados pela lentidão
  • Use zsh-defer ou o modo turbo do Zinit para carregá-los assíncronamente
  1. Cache os resultados de eval com evalcache
  • Instale: zinit light mroth/evalcache
  • Substitua eval "$(command)" por _evalcache command
  1. Considere fnm em vez de nvm
  • fnm é uma alternativa baseada em Rust que é muito mais rápida
  • Instale: brew install fnm ou curl -fsSL <https://fnm.vercel.app/install> | bash
  1. Minimize os plugins
  • Use apenas plugins que você realmente precisa
  • Escolha plugins modernos e otimizados (como fast-syntax-highlighting em vez de zsh-syntax-highlighting)
  1. Use o prompt instantâneo do Powerlevel10k
  • Faz com que seu shell apareça instantaneamente enquanto o carregamento continua em segundo plano
  1. Divida a configuração em vários arquivos
  • Mantenha .zshrc limpo e modular
  • Use arquivos separados para aliases, funções e variáveis de ambiente

Medição do Desempenho do Seu Shell

Adicione esta função ao seu .zshrc para verificar o tempo de inicialização do seu shell:

function timezsh() {
  shell=${1-$SHELL}
  for i in $(seq 1 10); do
    /usr/bin/time $shell -i -c exit
  done
}

Então execute timezsh para ver seu tempo médio de inicialização.

Conclusão

Ao usar ferramentas modernas como Zinit ou Zim, implementar carregamento preguiçoso e organizar sua configuração adequadamente, sua experiência com Zsh será significativamente mais rápida e mais agradável de usar. As abordagens delineadas aqui representam as melhores práticas atuais que equilibram funcionalidade com desempenho.

Lembre-se de que a configuração do shell é altamente pessoal - sinta-se à vontade para experimentar essas sugestões e adaptá-las ao seu fluxo de trabalho e preferências específicos.

💡
Ao otimizar sua experiência no terminal, vale a pena aprimorar também seu fluxo de trabalho de desenvolvimento de API. Se você é um desenvolvedor que trabalha com APIs, recomendo fortemente conferir Apidog como uma excelente alternativa ao Postman.

O Apidog combina documentação de API, depuração e testes automatizados em uma única plataforma, com uma interface mais intuitiva e melhores recursos de colaboração em equipe.

A funcionalidade de importação torna a transição do Postman tranquila, e muitos desenvolvedores relatam fluxos de trabalho mais rápidos com seus servidores fictícios e gerenciamento de ambientes. O nível gratuito é bastante generoso, tornando-o acessível para desenvolvedores individuais e pequenas equipes.

Dê uma chance ao Apidog junto com sua nova configuração do Zsh para um ambiente de desenvolvimento totalmente renovado!
button