PowerShell 7 + oh-my-posh + módulos — ahorra una hora a la semana en Windows Terminal
Entorno PowerShell 7 para uso diario en Windows Terminal — instalación de pwsh, perfil, tema oh-my-posh y seis módulos esenciales.
El PowerShell 5.1 integrado en Windows no es multiplataforma y tiene problemas de compatibilidad de módulos. PowerShell 7 (pwsh) es el estándar. Combínalo con oh-my-posh y seis módulos para igualar (o superar) el zsh + starship de macOS.
Esta guía es una configuración de PowerShell de 30 minutos tras la configuración inicial de Windows, que instala winget.
Resumen
- Instalar pwsh 7 —
winget install Microsoft.PowerShell - Establecer pwsh como predeterminado en el shell de Windows Terminal
- Activar el perfil — editar
$PROFILE - oh-my-posh — prompt (estado de Git / tiempo de ejecución / código de salida)
- Seis módulos — Terminal-Icons / posh-git / PSReadLine / z / PSFzf / CompletionPredictor
Requisitos previos
- Windows 10/11 con winget (configuración inicial de Windows)
- Windows Terminal instalado (winget o MS Store)
- Una Nerd Font (para los glifos de oh-my-posh)
1. Instalar PowerShell 7
winget install --id Microsoft.PowerShell -eAbre una nueva pestaña y ejecuta pwsh. Confirma:
$PSVersionTable.PSVersion
# Major: 7, Minor: 4+2. Establecer pwsh como shell predeterminado
Windows Terminal → Settings (Ctrl+,) → Inicio:
- Perfil predeterminado: PowerShell (7) — el icono azul oscuro (no el 5.1)
3. Configurar el perfil
# Ruta del archivo de perfil
$PROFILE
# C:\Users\me\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
# Crear si no existe
if (-not (Test-Path $PROFILE)) { New-Item -Type File -Path $PROFILE -Force }
# Editar
notepad $PROFILE
# o
code $PROFILE4. Instalar oh-my-posh
winget install JanDeDobbeleer.OhMyPosh -s wingetNueva terminal → previsualizar temas:
Get-PoshThemesSi las flechas/glifos/tiempo de ejecución se muestran como cuadros, te falta una Nerd Font:
- JetBrainsMono Nerd Font o
oh-my-posh font install JetBrainsMono - Windows Terminal → Settings → Profile → Appearance → Font face:
JetBrainsMono Nerd Font
4.1 Añadir al perfil
Añade al final de $PROFILE:
# Activar oh-my-posh
oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH\jandedobbeleer.omp.json" | Invoke-ExpressionLos temas son cuestión de gusto personal (jandedobbeleer, paradox, negligible, craver, etc.). Todos los temas están en $env:POSH_THEMES_PATH.
5. Seis módulos
# Todos a la vez
Install-Module -Name Terminal-Icons, posh-git, PSReadLine, z, PSFzf -Scope CurrentUser -Force
Install-Module -Name CompletionPredictor -AllowPrerelease -Scope CurrentUser -Force5.1 Registrar en el perfil
En $PROFILE:
# 5.1 Iconos (iconos por tipo de archivo en la salida de ls)
Import-Module Terminal-Icons
# 5.2 posh-git (estado de Git en el prompt)
Import-Module posh-git
# Si tu tema de oh-my-posh ya tiene el estado de Git, puede duplicarse. Elige uno.
# 5.3 PSReadLine (teclas estilo bash, historial, color de completado)
Import-Module PSReadLine
Set-PSReadLineOption -PredictionSource HistoryAndPlugin
Set-PSReadLineOption -PredictionViewStyle ListView
Set-PSReadLineKeyHandler -Chord Tab -Function Complete # estilo bash
# 5.4 z (saltar a directorios frecuentes — 'z proj')
Import-Module z
# 5.5 PSFzf (historial con Ctrl+R, búsqueda de archivos con Ctrl+T)
Import-Module PSFzf
Set-PsFzfOption -PSReadlineChordProvider 'Ctrl+t' -PSReadlineChordReverseHistory 'Ctrl+r'
# fzf en sí: winget install junegunn.fzf
# 5.6 CompletionPredictor (predicciones de tabulación basadas en comandos)
Import-Module CompletionPredictor6. Alias y funciones
Añade los tuyos al final de $PROFILE:
# Alternativas a ls (compatible con UNIX)
Set-Alias ll Get-ChildItem
function la { Get-ChildItem -Force @args }
# Recarga rápida
function reload-profile { . $PROFILE }
# Shell de administrador al instante
function admin { Start-Process pwsh -Verb RunAs }
# Atajos de Git
function gs { git status -sb }
function gd { git diff $args }
function gpl { git pull --rebase --autostash }
# WSL rápido
function w { wsl @args }7. Verificación
# Recargar perfil
. $PROFILE
# 1. Prompt de oh-my-posh — ve a un repo Git para ver la rama
cd C:\Users\me\Documents\my-repo
# 2. PSReadLine — flecha arriba para historial, escribe y ve la sugerencia gris → pulsa → para aceptar
git st<tecla →> # ¿se predice 'status'?
# 3. z — salta a una carpeta visitada anteriormente
z my-repo
# 4. Ctrl+R — búsqueda interactiva en el historial (fzf)
# 5. ll — ls con colores e iconos de Terminal-IconsResolución de problemas
oh-my-posh muestra cuadros en lugar de iconos
Nerd Font no aplicada. Windows Terminal → Settings → Profile → Appearance → establece una Nerd Font.
Error de permisos en Install-Module
- La primera vez:
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned - Omitir
-Scope CurrentUsera veces solicita administrador
El perfil no se carga
pwshy Windows Terminal al lanzar PowerShell 5.1 (powershell.exe) tienen rutas de perfil distintas- 5.1:
~/Documents/WindowsPowerShell/Microsoft.PowerShell_profile.ps1 - 7:
~/Documents/PowerShell/Microsoft.PowerShell_profile.ps1 - Confirma con
$PSVersionTable.PSVersion
posh-git es lento (repositorio grande)
git status en cada prompt es lento en monorepos grandes. Si el tema de oh-my-posh ya tiene un segmento de git, desactiva posh-git o establece $GitPromptSettings.EnableFileStatus = $false.
Ctrl+R no funciona
fzfno instalado —winget install junegunn.fzf- PSFzf instalado pero
fzf.exeno está en el PATH
Solo colores en escala de grises
Esquema de colores incorrecto en Windows Terminal. Settings → cambia el esquema a Campbell o One Half Dark.
Referencias
- Configuración inicial de Windows — configuración previa de winget
- Ajuste de WSL2 — shell Linux (zsh)
- oh-my-posh (oficial)
- PowerShell Gallery — descubrimiento de módulos
Registro de cambios
- 2026-05-12: Primer borrador. pwsh 7 + oh-my-posh + seis módulos + alias/funciones + cinco casos de resolución de problemas.