←← HDA-NAS | ← HDA-SERV | ↑ HDA-TERM | HDA-DOCKER →
He decidido actualizar y traducir el gist que tengo sobre la configuración de mi terminal (Windows Term) y mi perfil de PowerShell, añadiendo todas las mejoras que he implementado recientemente. Cabe destacar que en el hilo-guía sobre el homelab hda-serv dejo una configuración del .zshrc, que en cierto modo podría ser análoga a la configuración del PowerShell aquí.
Este tuto se engloba en los otros de la serie:
- Capa de Backup (hda-nas): La base física que garantiza la persistencia y seguridad de datos.
- Capa de Computación (hda-serv): El motor que proporciona recursos de procesamiento y virtualización.
- Capa de Interfaz (hda-term): El punto de entrada y gestión para administración eficiente.
- Capa de Servicios (hda-svc) (en desarrollo): La capa de aplicación donde el valor práctico se materializa a través de múltiples servicios especializados.
Antes de continuar, como siempre, debo comentar que no soy ningún experto a bajo nivel en la materia. Tengo nociones de sistemas operativos y línea de comandos, pero para nada soy profesional de sistemas ni de coña. Mi trasfondo es de programador y de físico, aunque siempre he sido entusiasta de la informática y desde pequeño me he dedicado a montar, desmontar y formatear mis ordenadores. Todo esto lo comparto como aficionado que disfruta optimizando su entorno de trabajo para aumentar la eficiencia y la comodidad.
Lo que quiero decir con esto es que lo que comparto puede estar errado. Por favor, si encontráis algún error de contenido o forma, hacédmelo saber ya sea por comentarios o haciéndome un PR. Este tutorial es simplemente una guía de configuración para tener un terminal más eficiente y personalizado en Windows.
- Índice
- Preámbulo
- Instalación de componentes
- Configuración de fuentes
- Temas de Oh My Posh
- Configuración del perfil de PowerShell
- Configuración de Windows Terminal
- Herramientas avanzadas
- Flujos de trabajo optimizados
- Palabras finales
Como entusiasta de la informática, siempre he buscado formas de hacer mi interacción con el ordenador más cómoda y eficiente. La línea de comandos es una herramienta fundamental para cualquier persona que trabaje intensivamente con un pc y, en Windows, el terminal predeterminado puede quedarse corto en cuanto a funcionalidades y estética.*
Esta guía nace de mi deseo de compartir una configuración que he ido refinando con el tiempo, buscando no solo mejorar la apariencia de la terminal sino, sobre todo, aumentar mi productividad diaria a través de funcionalidades avanzadas, atajos inteligentes y herramientas modernas que hacen de PowerShell un entorno mucho más potente.
Este tutorial representa la tercera capa de mi arquitectura personal de computación. Si en hda-nas establecí la capa de almacenamiento seguro y redundante (la base física) y en hda-serv desarrollé la capa de computación y servicios (el motor), aquí abordo la capa de interfaz humano-máquina. Esta progresión lógica sigue un patrón similar al de cualquier arquitectura informática robusta: primero aseguramos los datos, luego configuramos el procesamiento, y finalmente optimizamos la interacción. El terminal es mi principal punto de contacto con todo el sistema, por lo que su configuración óptima multiplica la eficiencia de las capas anteriores y sienta las bases para la capa final de servicios específicos (hda-svc) que desarrollaré en el próximo tutorial.
Un terminal personalizado va más allá de la simple consola de comandos predeterminada. Incluye mejoras estéticas como temas de colores, información visual del sistema y de repositorios git, pero también mejoras funcionales como autocompletado inteligente, predicción de comandos, búsqueda interactiva en el historial, y atajos de teclado eficientes.
Las ventajas de un terminal bien configurado incluyen:
- Mayor productividad al reducir la cantidad de texto que necesitas escribir
- Mejor visualización de información crítica (estados de git, rutas, errores)
- Experiencia más agradable que incentiva el uso de la línea de comandos
- Funcionalidades avanzadas que facilitan tareas complejas
Antes de empezar, doy por hecho que tienes corriendo y funcionando winget. Winget es un gestor de instalación por consola que viene ya integrado con Windows 11, en anteriores versiones del OS hay que instalarlo a mano. Es análogo a apt-get de Debian, por ejemplo. Existe otra herramienta en el ecosistema Windows (no oficial) que durante años sirvió para hacer la instalación básica de aplicaciones en windows: Ninite. Hoy por hoy, Ninite pierde todo el sentido, pues gracias a winget puedes instalar lo que quieras (ya sea desde repos oficiales de windows, o desde github) por lo que el universo de aplicaciones es total, frente a las 87 que te permite Ninite. El uso básico de winget no tiene dificultad. Así se instalaría un programa:
winget install Google.Chrome
También puedes poner todos los programas que desees (como ese "Google.Chrome" del ejemplo de arriba) en un archivo de texto y ejecutar:
winget import archivo.txt
Para hacerlo más sencillo todavía, para "doble click", te montas un archivo bat de la forma:
@echo off winget import archivo.txt
Y lo guardas como miPropioAppsBasicas.bat, y al lado archivo.txt con las app que quieras. Más info aquí.
Una de las cosas más relevantes de winget es que puedes invocar la siguiente expresión para que te actualice todas las apps del sistema: winget update --all
Para este tutorial usaremos en la línea de comandados Winget para instalar las dependencias.
Empezamos abriendo PowerShell como administrador y ejecuntando los siguientes comandos para instalar las herramientas básicas necesarias: El terminal de windows, la última versión de powershell, una capa gráfica para powershell, un visualizador de sistema/recursos y un programa actual para hacer ls/dir:
# Instalar Windows Terminal
winget install --id=Microsoft.WindowsTerminal -e
# Instalar PowerShell 7 (si aún no lo tienes)
winget install --id Microsoft.PowerShell -e
# Instalar Oh My Posh para personalización del prompt
winget install JanDeDobbeleer.OhMyPosh -s winget
# Instalar Neofetch para información del sistema
winget install nepnep.neofetch-win
# Instalar eza, alternativa mejorada a ls
winget install eza-community.ezaLos sigueintes módulos extienden significativamente las capacidades de PowerShell:
# Módulos esenciales
## Mejora la edición de línea de comandos con resaltado de sintaxis y autocompletado avanzado
Install-Module PSReadLine -AllowPrerelease -Scope CurrentUser -Force -SkipPublisherCheck
## Integración de Git en PowerShell con información de estado y autocompletado
Install-Module posh-git -Scope CurrentUser
## Añade iconos visuales a archivos y directorios en la terminal
Install-Module Terminal-Icons -Repository PSGallery -Scope CurrentUser
# Módulos para funcionalidades adicionales
## Gestión de actualizaciones de Windows desde PowerShell
Install-Module PSWindowsUpdate -Scope CurrentUser
## Proporciona resaltado de sintaxis adicional para código
Install-Module syntax-highlighting -Scope CurrentUser
## Integración avanzada con Windows Terminal
Install-Module wt-shell-integration -Scope CurrentUser
## Búsqueda difusa interactiva
Install-Module PSFzf -Scope CurrentUser
## Navegación rápida entre directorios
Install-Module z -Scope CurrentUserAlgunas herramientas adicionales que mejorarán tu experiencia. Sobre mi uso de everything recomiendo la integración de la experiencia con flow.launcher; esto trasciende la configuración de una consola, pero me gustaría dejar el comentario aquí.
# Instalar fzf (requerido por PSFzf)
winget install junegunn.fzf
# Instalar Everything (opcional, para búsqueda rápida de archivos)
winget install voidtools.EverythingPara utilizar Oh My Posh con todos sus glifos e iconos necesitarás una Nerd Font. Recomiendo la fuente SpaceMono NF, pero puedes escoger la que más te guste.
La forma más sencilla es usar el propio Oh My Posh para instalar la fuente:
- Abre una consola con privilegios de administrador
- Ejecuta:
oh-my-posh font install SpaceMono
Si prefieres hacerlo manualmente:
- Descarga la fuente desde nerd-fonts, por ejemplo SpaceMono.zip
- Extrae los archivos
.ttf - Haz clic derecho en cada archivo
.ttfy selecciona "Instalar"
Una vez instalada la fuente, necesitas configurarla como predeterminada en Windows Terminal:
- Abre Windows Terminal
- Pulsa
Ctrl+,o abre el menú desplegable y selecciona "Configuración" - En "Valores predeterminados" > "Apariencia", cambia la fuente a "SpaceMono NF"
- Alternativamente, puedes utilizar directamente el archivo settings.json que está en la carpeta hda-term-assets del repositorio como punto de partida para tu configuración
Oh My Posh ofrece múltiples temas que puedes explorar con el comando Get-PoshThemes. Aquí podéis ver varios ejemplos. Para esta guía, utilizaré uno basado en Powerlevel10k, un tema muy popular por su claridad y funcionalidad.
Lo mejor del nuevo perfil es que buscará automáticamente el tema en varias ubicaciones posibles, pero asegúrate de tener al menos uno instalado:
- El perfil buscará primero:
~/AppData/Local/Programs/oh-my-posh/themes/powerlevel10k_rainbow.omp.json - Si no lo encuentra, usará cualquier tema que contenga "powerlevel10k" en su nombre
- Como último recurso, utilizará el tema predeterminado
Puedes descargar el tema recomendado y guardarlo en la ubicación apropiada:
# Crear directorio si no existe
if (!(Test-Path -Path "$env:LOCALAPPDATA/Programs/oh-my-posh/themes/")) {
New-Item -ItemType Directory -Path "$env:LOCALAPPDATA/Programs/oh-my-posh/themes/" -Force
}
# Descargar el tema
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/powerlevel10k_rainbow.omp.json" -OutFile "$env:LOCALAPPDATA/Programs/oh-my-posh/themes/powerlevel10k_rainbow.omp.json"El perfil de PowerShell es un script que se ejecuta cada vez que inicias una nueva sesión. Para utilizar el perfil personalizado:
- Copia el archivo Microsoft.PowerShell_profile.ps1 desde la carpeta hda-term-assets del repositorio
- Pégalo en la carpeta adecuada según tu versión de PowerShell:
- Para PowerShell 7:
$HOME\Documents\PowerShell\Microsoft.PowerShell_profile.ps1 - Para PowerShell 5.1:
$HOME\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
- Para PowerShell 7:
Si no estás seguro de dónde debe ir el archivo, ejecuta:
echo $PROFILETambién puedes crear el directorio si no existe:
if (!(Test-Path -Path (Split-Path $PROFILE))) {
New-Item -ItemType Directory -Path (Split-Path $PROFILE) -Force
}El perfil de PowerShell incluye numerosas mejoras y características:
- Medición de tiempo de carga: Te informa si el perfil tarda demasiado en cargar
- Verificación de módulos: Comprueba automáticamente si faltan módulos críticos o recomendados
- Temas automáticos: Búsqueda inteligente de temas de Oh My Posh en múltiples ubicaciones
- Predicción avanzada: Configuración optimizada de PSReadLine para predicción de comandos
- Búsqueda interactiva: Integración con PSFzf para búsqueda difusa en historial y archivos
- Navegación rápida: Soporte para el módulo Z que aprende tus directorios más usados
- Indicaciones de alias: Te sugiere cuando hay atajos disponibles para comandos largos
- Personalización de colores: Esquema de colores optimizado para mejor legibilidad
- Guía de uso integrada: Documentación completa de comandos y atajos al final del archivo
El perfil incluye numerosas funciones y alias para mejorar tu productividad:
ezall/ll: Listado detallado de archivos con iconos e información gitupdateall: Actualiza Windows Defender y paquetes Wingetef: Búsqueda rápida de archivos con Everythingnpp "ARCHIVO": Abre "ARCHIVO" con el Notepad++
z: Salto rápido a directorios frecuentesfcd: Navegación interactiva entre directorios..,...,....: Navegar hacia arriba en la jerarquía de directorios~: Ir al directorio homecg: Ir a C:\git (personalizable)
dps,dpsa: Listar contenedores (en ejecución/todos)dbash,dsh: Ejecutar shell en un contenedordrun: Ejecutar una nueva instancia de una imagendc,dcu,dcd: Comandos docker-compose
g: Alias para gitga: Git addgcom: Git commit con mensajegpush,gpull: Push/pull de cambios
uvs: Activar entorno virtualui,upi: Instalar paquetesuf: Listar paquetes instaladosutest,ulint: Ejecutar tests/linters
pinst: Instalar dependenciaspsh: Activar shell de poetryprun: Ejecutar comando en entorno
Windows Terminal es altamente personalizable. Puedes configurarlo editando su archivo settings.json:
- Abre Windows Terminal
- Pulsa
Ctrl+,para abrir la configuración - Haz clic en "Abrir archivo JSON" en la esquina inferior izquierda
Utiliza el archivo settings.json de la carpeta hda-term-assets como plantilla. Este archivo incluye:
- Temas de colores personalizados
- Perfiles para diferentes shells (PowerShell, WSL, Azure, etc.)
- Iconos personalizados para cada perfil
- Atajos de teclado optimizados
- Configuraciones de apariencia
Aspectos destacados a configurar:
"profiles": {
"defaults": {
"font": {
"face": "SpaceMono NF",
"size": 11
},
"opacity": 95,
"useAcrylic": true
}
}Puedes ajustar estos valores según tus preferencias personales.
*PSFzf en acción: búsqueda interactiva en el historial de comandos con Ctrl+R mostrando resultados filtrados en tiempo real.*PSFzf es una integración de PowerShell con FZF (Fuzzy Finder), que proporciona una búsqueda interactiva incremental:
# Instalar PSFzf si aún no lo has hecho
Install-Module PSFzf -Scope CurrentUser
# Asegúrate de que FZF está instalado
winget install junegunn.fzfCon PSFzf configurado en el perfil, podrás usar:
Ctrl+R: Búsqueda interactiva en el historial de comandosCtrl+T: Completado interactivo de rutas de archivofcd: Navegación interactiva entre directoriosfe: Selección de archivos para editarfkill: Terminación interactiva de procesosfpgrep: Búsqueda de texto en archivos con vista previa
El módulo Z aprende tus patrones de navegación y te permite saltar rápidamente a directorios frecuentes:
# Instalar Z si aún no lo has hecho
Install-Module z -Scope CurrentUser -AllowClobberEjemplos de uso:
z downpara ir a ~/Downloadsz docpara ir a ~/Documentsz projpara ir a C:/git/projectszsin argumentos muestra una lista de directorios frecuentes
El perfil incluye alias y funciones para trabajar con UV, una alternativa moderna a pip. UV destaca por su implementación en Rust que lo hace 10-100 veces más rápido que pip, especialmente en proyectos complejos. Ofrece resolución de dependencias más predecible, instalaciones atómicas que evitan estados inconsistentes, y mantiene compatibilidad total con requirements.txt y pyproject.toml:
# Ejemplos de uso de UV
uvs # Activar entorno virtual en .venv
ui # uv install - Instalar dependencias
upi # uv pip install - Instalar paquetes con pip
ua # uv add - Añadir paquetes
uf # uv freeze - Listar paquetes
utest # uv run test - Ejecutar tests
ulint # uv run lint - Ejecutar linter
uform # uv run format - Formatear códigoEl siguiente ejemplo muestra cómo la configuración permite un flujo de trabajo más ágil:
# Antes
cd C:\Users\username\Projects\my-project
git status
docker ps
docker-compose up -d
docker logs -f container_name
# Después
z proj # Navega a my-project usando Z
g status # Alias para git status con información visual
dps # Lista contenedores Docker
dcu # Levanta contenedores con docker-compose
dl container_name # Muestra logs del contenedor# Buscar rápidamente archivos de configuración
ef -Files "*.config"
# Actualizar todo el sistema
updateall
# Alternativamente puedes usar el siguiente alias
up
# Monitorizar recursos
neofetchEl perfil de PowerShell incluye una completa guía de uso al final del archivo. Para ver esta documentación, simplemente abre el archivo Microsoft.PowerShell_profile.ps1 y desplázate hasta la sección GUÍA DE ATAJOS Y COMANDOS cerca del final.
Esta documentación integrada incluye:
- Comandos de búsqueda y navegación
- Opciones para listar archivos
- Comandos Docker detallados
- Atajos Git
- Funciones para Python/UV
- Comandos Poetry
- Herramientas de sistema
- Atajos de teclado importantes
Mantener esta guía integrada en el perfil te permite acceder rápidamente a la documentación sin necesidad de recursos externos.
La configuración de terminales es un proceso en constante evolución. Algunas ideas para futuras mejoras:
- Integración con WSL2: Mejorar la interacción entre PowerShell y distribuciones Linux
- Automatización de backups: Crear un sistema para respaldar configuraciones
- Gestión de entornos: Ampliar soporte para otros gestores de paquetes (conda, pipx)
- Personalización por proyecto: Perfiles específicos según el directorio actual
- Integraciones con APIs: Widgets para información de clima, tareas, calendario
He creado este tutorial como parte de mi serie sobre configuraciones personales. Si te ha resultado útil, considera revisar los otros tutoriales de la serie:
- HDA-NAS: Configuración de hardware para NAS
- HDA-SERV: Configuración del sistema servidor
- HDA-TERM (este tutorial): Configuración de terminal y PowerShell
- HDA-SVC (en desarrollo): La capa de aplicación donde el valor práctico se materializa a través de múltiples servicios especializados.
Estoy abierto a sugerencias, recomendaciones y mejoras para esta guía. Si tienes alguna idea o encuentras algún error, no dudes en comentarlo o hacer un PR en el repositorio.
Changelog ↑
- Versión 1.0R0 (08/04/2025)
- Añadido el changelog
- Añadida la barra de navegación
- Versión 1.0R0 (30/03/2025)
- Versión final
- Versión 0.8R0 (10/01/2025)
- Versión mejorada en tutorial
- Versión 0.4R1 (15/10/2024)
- Actualizado el perfil de powershell para el uso de Set-PSReadLineOption
- Versión 0.4R0 (07/10/2024)
- Añadido syntax-highlighting
- Añadido wt-shell-integration
- Actualizado el perfil de powershell para estos módulos
- Versión 0.3R0 (30/05/2024)
- Añadido PSWindowsUpdate
- Actualizado el perfil de powershell para PSWindowsUpdate
- Versión 0.2R0 (05/06/2023)
- Añadidas fuentes
- Cambios menores
- Versión 0.1R0 (01/06/2023)
- Versión inicial (gist).
Esta obra está bajo una licencia Reconocimiento-No comercial 4.0 de Creative Commons. Para ver una copia de esta licencia, visite https://creativecommons.org/licenses/by-nc/4.0/deed.es o envíe una carta a Creative Commons, 171 Second Street, Suite 300, San Francisco, California 94105, USA.




