Zsh (Z Shell) se ha vuelto cada vez más popular entre los desarrolladores debido a sus potentes características y amplias capacidades de personalización. Esta guía te guiará a través de la configuración de una configuración de Zsh rápida, eficiente y rica en funciones que evita los problemas de rendimiento comunes.
Apidog combina la documentación de la API, la depuración y las pruebas automatizadas en una sola plataforma con una interfaz más intuitiva y mejores funciones de colaboración en equipo.
La funcionalidad de importación hace que el cambio desde Postman sea perfecto, y muchos desarrolladores informan de flujos de trabajo más rápidos con sus servidores mock y la gestión del entorno. El nivel gratuito es bastante generoso, lo que lo hace accesible para desarrolladores individuales y pequeños equipos.
¡Prueba Apidog junto con tu nueva configuración de Zsh para un entorno de desarrollo completamente renovado!
Por qué esta configuración de Zsh funciona mejor
El enfoque que voy a describir ofrece varias ventajas sobre las configuraciones tradicionales:
- Tiempos de inicio significativamente más rápidos (0,03-0,07 s frente a 0,5-1,0 s con Oh My Zsh básico)
- Gestión moderna de plugins con mejores características de rendimiento
- Carga diferida de componentes que consumen muchos recursos
- Estructura de configuración más limpia que es más fácil de mantener
Cómo usar esta configuración de Zsh (2 opciones)
Tienes varias opciones para tu framework de Zsh, cada una con diferentes ventajas y desventajas:
Opción 1: Zinit + Powerlevel10k (Avanzado, Mejor Rendimiento)
Zinit es un potente gestor de plugins que permite la carga asíncrona y ofrece un rendimiento excepcional.
- Instala Zsh primero:
# For Ubuntu/Debian
sudo apt install zsh
# For macOS with Homebrew
brew install zsh
# For Fedora
sudo dnf install zsh
2. Haz de Zsh tu shell predeterminado:
chsh -s $(which zsh)
3. Instala Zinit:
bash -c "$(curl --fail --show-error --silent --location <https://raw.githubusercontent.com/zdharma-continuum/zinit/HEAD/scripts/install.sh>)"
4. Crea tu configuración .zshrc
:
# Enable Powerlevel10k instant prompt (makes shell appear instantly)
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
# Load Zinit
source "$HOME/.local/share/zinit/zinit.git/zinit.zsh"
# Load Powerlevel10k theme
zinit ice depth=1
zinit light romkatv/powerlevel10k
# Core zsh functionality (history, completion)
zinit snippet OMZL::history.zsh
zinit snippet OMZL::completion.zsh
zinit snippet OMZL::key-bindings.zsh
# Essential plugins with async loading (turbo mode)
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
# Git plugin from Oh My Zsh - loaded when entering a git repository
zinit ice wait lucid
zinit snippet OMZP::git
# Load Node version manager only when needed
export NVM_LAZY_LOAD=true
export NVM_COMPLETION=true
zinit ice wait lucid
zinit light lukechilds/zsh-nvm
# Starting directory
cd ~/repos
# Source aliases from a separate file for better organization
[[ -f ~/.zsh_aliases ]] && source ~/.zsh_aliases
# Configure Powerlevel10k
POWERLEVEL9K_PROMPT_ADD_NEWLINE=true
POWERLEVEL9K_MODE='awesome-fontconfig'
POWERLEVEL9K_BATTERY_SHOW=false # Turn off battery status
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir vcs)
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status time background_jobs)
# Initialize Powerlevel10k
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh
5. Configura Powerlevel10k:
Después de reiniciar tu terminal, el asistente de configuración de Powerlevel10k se iniciará automáticamente. Sigue las indicaciones para personalizar la apariencia de tu prompt.
Si necesitas reconfigurar más tarde, ejecuta:
p10k configure
Opción 2: Zim (Más simple, aún rápido)
Zim es un framework de Zsh más fácil de usar pero aún muy rápido que ofrece un gran equilibrio entre características y rendimiento.
- Instala Zsh (igual que arriba)
- Instala Zim:
curl -fsSL <https://raw.githubusercontent.com/zimfw/install/master/install.zsh> | zsh
- Edita tu archivo
.zimrc
para agregar módulos:
# Core
zmodule environment
zmodule git
zmodule input
zmodule termtitle
zmodule utility
# Prompt
zmodule romkatv/powerlevel10k
# Completion
zmodule zsh-users/zsh-completions
zmodule completion
# Modules that must be initialized last
zmodule romkatv/zsh-defer # For async loading
zmodule zsh-users/zsh-syntax-highlighting
zmodule zsh-users/zsh-autosuggestions
zmodule zsh-users/zsh-history-substring-search
- Crea tu archivo
.zshrc
:
# Enable Powerlevel10k instant prompt
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 for async loading
source ${ZIM_HOME}/modules/zsh-defer/zsh-defer.plugin.zsh
# Start ZIM
if [[ ! ${ZIM_HOME}/init.zsh -nt ${ZDOTDIR:-${HOME}}/.zimrc ]]; then
# Update static initialization script if it does not exist or is outdated
zsh-defer source ${ZIM_HOME}/zimfw.zsh init -q
fi
source ${ZIM_HOME}/init.zsh
# Customize key bindings
bindkey '^[[A' history-substring-search-up
bindkey '^[[B' history-substring-search-down
# Lazy load Node version managers
if command -v fnm &> /dev/null; then
zsh-defer eval "$(fnm env --use-on-cd)" # Use fnm (faster alternative to nvm)
elif command -v nvm &> /dev/null; then
zsh-defer source $(brew --prefix nvm)/nvm.sh # Only load nvm when needed
fi
# Starting directory
cd ~/repos
# Source aliases
[[ -f ~/.zsh_aliases ]] && source ~/.zsh_aliases
# Load powerlevel10k configuration
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh
Creando un mejor archivo de alias
En lugar de incrustar todos los alias directamente en tu .zshrc
, crea un archivo .zsh_aliases
separado para una mejor organización:
# Create a .zsh_aliases file
touch ~/.zsh_aliases
Aquí hay una versión mejorada de los alias con una mejor organización:
# File operations
alias rmrf='rm -rf'
alias ls='ls -lart --color=auto'
# Directory navigation
alias r='cd ~/repos'
alias ..='cd ..'
alias ...='cd ../..'
alias ....='cd ../../..'
# Development environments
alias c='code .'
alias s='cursor .'
alias e='exit'
# Git operations
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'
# Package management - 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'
# Package management - 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'
# Package management - 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'
# Development tools
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"
Consejos para la optimización del rendimiento
- Usa la carga diferida para componentes pesados
- Los administradores de versiones de Node (nvm, fnm) son los principales culpables de la ralentización
- Usa
zsh-defer
o el modo turbo de Zinit para cargarlos de forma asíncrona
- Almacena en caché las salidas de eval con evalcache
- Instala:
zinit light mroth/evalcache
- Reemplaza
eval "$(command)"
con_evalcache command
- Considera fnm en lugar de nvm
- fnm es una alternativa basada en Rust que es mucho más rápida
- Instala:
brew install fnm
ocurl -fsSL <https://fnm.vercel.app/install> | bash
- Minimiza los plugins
- Usa solo los plugins que realmente necesitas
- Elige plugins modernos y optimizados (como fast-syntax-highlighting en lugar de zsh-syntax-highlighting)
- Usa el prompt instantáneo de Powerlevel10k
- Hace que tu shell aparezca instantáneamente mientras la carga continúa en segundo plano
- Divide la configuración en varios archivos
- Mantén
.zshrc
limpio y modular - Usa archivos separados para alias, funciones y variables de entorno
Midiendo el rendimiento de tu shell con la nueva configuración de Zsh
Agrega esta función a tu .zshrc
para verificar el tiempo de inicio de tu shell:
function timezsh() {
shell=${1-$SHELL}
for i in $(seq 1 10); do
/usr/bin/time $shell -i -c exit
done
}
Luego ejecuta timezsh
para ver tu tiempo de inicio promedio.
Conclusión
Al usar herramientas modernas como Zinit o Zim, implementar la carga diferida y organizar tu configuración correctamente, tu experiencia con Zsh será significativamente más rápida y agradable de usar. Los enfoques descritos aquí representan las mejores prácticas actuales que equilibran la funcionalidad con el rendimiento.
Recuerda que la configuración del shell es muy personal: siéntete libre de experimentar con estas sugerencias y adaptarlas a tu flujo de trabajo y preferencias específicos.
Apidog combina la documentación de la API, la depuración y las pruebas automatizadas en una sola plataforma con una interfaz más intuitiva y mejores funciones de colaboración en equipo.
La funcionalidad de importación hace que el cambio desde Postman sea perfecto, y muchos desarrolladores informan de flujos de trabajo más rápidos con sus servidores mock y la gestión del entorno. El nivel gratuito es bastante generoso, lo que lo hace accesible para desarrolladores individuales y pequeños equipos.
¡Prueba Apidog junto con tu nueva configuración de Zsh para un entorno de desarrollo completamente renovado!