Personalizar shell y configuraciones avanzadas
La personalización del shell en VS Code va más allá de cambiar la apariencia básica de la terminal. Permite configurar el comportamiento, las funcionalidades avanzadas y la integración profunda con el sistema operativo para crear un entorno de desarrollo verdaderamente optimizado.
Configuración avanzada de shells
El shell por defecto determina no solo qué intérprete de comandos utilizas, sino también qué funcionalidades específicas están disponibles. VS Code permite configurar diferentes shells según tus necesidades de desarrollo:
Para configurar el shell por defecto en Windows:
{
"terminal.integrated.defaultProfile.windows": "PowerShell",
"terminal.integrated.profiles.windows": {
"PowerShell": {
"source": "PowerShell",
"args": ["-NoProfile"]
},
"Command Prompt": {
"path": "C:\\Windows\\System32\\cmd.exe"
},
"Git Bash": {
"path": "C:\\Program Files\\Git\\bin\\bash.exe"
}
}
}
Para sistemas Unix (macOS/Linux):
{
"terminal.integrated.defaultProfile.osx": "zsh",
"terminal.integrated.profiles.osx": {
"zsh": {
"path": "/bin/zsh",
"args": ["-l"]
},
"bash": {
"path": "/bin/bash",
"args": ["-l"]
}
}
}
Perfiles de terminal personalizados
Los perfiles de terminal permiten crear configuraciones específicas para diferentes tipos de trabajo. Cada perfil puede tener su propio shell, argumentos, variables de entorno y configuraciones visuales:
{
"terminal.integrated.profiles.windows": {
"Desarrollo Node.js": {
"source": "PowerShell",
"args": ["-NoProfile"],
"env": {
"NODE_ENV": "development",
"DEBUG": "*"
},
"icon": "symbol-event"
},
"Python Development": {
"source": "PowerShell",
"args": ["-Command", "conda activate myenv; powershell"],
"env": {
"PYTHONPATH": "${workspaceFolder}/src"
},
"color": "terminal.ansiGreen"
},
"Docker Terminal": {
"path": "C:\\Program Files\\Docker\\Docker\\resources\\bin\\docker.exe",
"args": ["run", "-it", "--rm", "ubuntu:latest", "/bin/bash"],
"icon": "vm"
}
}
}
Variables de entorno avanzadas
La gestión de variables de entorno en VS Code puede configurarse tanto globalmente como por perfil de terminal. Esto es especialmente útil para proyectos que requieren configuraciones específicas:
{
"terminal.integrated.env.windows": {
"JAVA_HOME": "C:\\Program Files\\Java\\jdk-17",
"MAVEN_HOME": "C:\\apache-maven-3.8.6",
"CUSTOM_API_URL": "https://api.desarrollo.local"
},
"terminal.integrated.profiles.windows": {
"Producción": {
"source": "PowerShell",
"env": {
"NODE_ENV": "production",
"API_URL": "https://api.produccion.com",
"LOG_LEVEL": "error"
}
}
}
}
Configuración del PATH
La modificación del PATH permite que VS Code encuentre ejecutables específicos sin necesidad de especificar rutas completas. Esto se puede configurar de manera persistente:
En Windows (PowerShell):
{
"terminal.integrated.profiles.windows": {
"PowerShell Personalizado": {
"source": "PowerShell",
"args": [
"-Command",
"$env:PATH += ';C:\\herramientas\\bin;C:\\sdk\\bin'; powershell"
]
}
}
}
En sistemas Unix:
{
"terminal.integrated.profiles.osx": {
"zsh-dev": {
"path": "/bin/zsh",
"args": ["-l"],
"env": {
"PATH": "/usr/local/bin:/opt/homebrew/bin:${env:PATH}"
}
}
}
}
Comandos de inicio automático
Los comandos de inicio se ejecutan automáticamente cuando se abre una nueva terminal. Son útiles para configurar el entorno de trabajo, activar entornos virtuales o mostrar información del proyecto:
{
"terminal.integrated.profiles.windows": {
"Desarrollo Web": {
"source": "PowerShell",
"args": [
"-Command",
"Write-Host 'Iniciando entorno de desarrollo...'; cd ${workspaceFolder}; npm run dev"
]
}
}
}
Para comandos más complejos, puedes usar scripts:
{
"terminal.integrated.profiles.windows": {
"Setup Completo": {
"source": "PowerShell",
"args": ["-ExecutionPolicy", "Bypass", "-File", "${workspaceFolder}/.vscode/setup.ps1"]
}
}
}
Integración con WSL
La integración con WSL (Windows Subsystem for Linux) permite acceder a un entorno Linux completo desde VS Code en Windows. Esta configuración requiere ajustes específicos para optimizar el rendimiento:
{
"terminal.integrated.profiles.windows": {
"Ubuntu WSL": {
"source": "Ubuntu",
"args": ["--cd", "${workspaceFolder}"]
},
"WSL con Node": {
"source": "Ubuntu",
"args": ["-c", "cd ${workspaceFolder} && exec zsh"]
}
},
"terminal.integrated.defaultProfile.windows": "Ubuntu WSL"
}
Para proyectos específicos de WSL:
{
"terminal.integrated.profiles.windows": {
"WSL Docker": {
"source": "Ubuntu",
"args": ["-c", "cd /mnt/c/proyectos && docker-compose up -d && exec bash"]
}
}
}
Configuraciones de shell específicas
Cada shell tiene configuraciones particulares que pueden optimizarse para el desarrollo. Por ejemplo, para PowerShell puedes configurar módulos específicos:
{
"terminal.integrated.profiles.windows": {
"PowerShell Pro": {
"source": "PowerShell",
"args": [
"-NoLogo",
"-Command",
"Import-Module posh-git; Import-Module PSReadLine; Set-PSReadLineOption -PredictionSource History"
]
}
}
}
Para Git Bash con configuraciones específicas:
{
"terminal.integrated.profiles.windows": {
"Git Bash Avanzado": {
"path": "C:\\Program Files\\Git\\bin\\bash.exe",
"args": ["--login", "-i"],
"env": {
"TERM": "xterm-256color",
"CHERE_INVOKING": "1"
}
}
}
}
Estas configuraciones avanzadas transforman la terminal de VS Code en una herramienta verdaderamente personalizada que se adapta al flujo de trabajo específico de cada proyecto.
Apariencia y tamaño de fuente
La terminal integrada tiene sus propias opciones de apariencia independientes del editor de código. Se pueden configurar la fuente, el tamaño y el interlineado de forma separada:
{
"terminal.integrated.fontFamily": "Cascadia Code",
"terminal.integrated.fontSize": 14,
"terminal.integrated.lineHeight": 1.2
}
Estas opciones permiten usar una fuente más grande en la terminal para facilitar la lectura de logs largos, mientras se mantiene una fuente más compacta en el editor de código.
El comportamiento del cursor y del scroll en la terminal también se pueden ajustar para adaptarlos al flujo de trabajo habitual:
{
"terminal.integrated.scrollback": 5000,
"terminal.integrated.cursorStyle": "line",
"terminal.integrated.cursorBlinking": true
}
Contexto histórico: de CMD a los perfiles modernos
Durante décadas, la única terminal disponible en Windows era CMD, un intérprete heredado de MS-DOS con capacidades muy limitadas. En 2006, Microsoft introdujo PowerShell, que ofrecía un lenguaje de scripting moderno basado en objetos. Sin embargo, hasta la llegada de Windows Terminal y la integración profunda en Visual Studio Code, la experiencia de la línea de comandos en Windows era notablemente inferior a la de macOS o Linux. Hoy, los perfiles de terminal de VS Code permiten configurar PowerShell, CMD, Git Bash, WSL y cualquier otro shell desde una sola ventana, cerrando por fin esa brecha histórica.
Atajos de teclado adicionales
Además del atajo básico, existen combinaciones especialmente útiles para trabajar con perfiles y configuraciones:
- Ctrl + Shift + P y
Terminal: Select Default Profile: cambia rápidamente el perfil por defecto sin editarsettings.json. - Ctrl + Shift + P y
Terminal: Create New Terminal (With Profile): abre una nueva terminal eligiendo el perfil directamente desde un menú. - Ctrl + Shift + \: divide la terminal actual, útil para comparar comandos simultáneos.
- Ctrl + Alt + ↑ / ↓: cambia el foco entre los paneles divididos.
- Ctrl + Shift + C: copia la selección actual de la terminal.
- Ctrl + Shift + V: pega contenido desde el portapapeles.
- Ctrl + Shift + K: borra completamente el contenido visible del buffer.
Ejemplo paso a paso: crear un perfil para un proyecto Node.js con variables de entorno
Imagina que trabajas en una API Node.js que requiere variables de entorno específicas y el uso de pnpm en lugar de npm. El flujo para crear un perfil dedicado sería:
- Abre Settings con Ctrl + , y haz clic en el icono Open Settings (JSON) para editar el archivo directamente.
- Añade un nuevo perfil bajo
terminal.integrated.profiles.windows:"API Backend": { "source": "PowerShell", "args": ["-NoProfile"], "env": { "NODE_ENV": "development", "PORT": "4000", "DB_HOST": "localhost", "DB_PORT": "5432" }, "icon": "server-environment", "color": "terminal.ansiGreen" } - Guarda el archivo con Ctrl + S.
- Pulsa Ctrl + Shift + P y ejecuta
Terminal: Create New Terminal (With Profile). - Selecciona API Backend en el menú.
- Verifica que las variables están activas ejecutando
echo $env:NODE_ENV(PowerShell) oecho $NODE_ENV(bash). - Ejecuta
pnpm installypnpm devpara arrancar el servidor.
Tabla comparativa de shells habituales en VS Code
| Shell | SO | Fortaleza | Limitación | |-------|-----|----------|-------------| | PowerShell | Windows, Linux, macOS | Objetos y scripting avanzado | Curva de aprendizaje | | CMD | Windows | Simplicidad extrema | Sintaxis limitada | | Bash | Linux, macOS, WSL | Ecosistema Unix completo | Sintaxis arcana para principiantes | | Zsh | Linux, macOS | Autocompletado y plugins | Requiere configuración inicial | | Fish | Linux, macOS | Sintaxis moderna y amigable | Compatibilidad limitada con scripts bash | | Git Bash | Windows | Compatibilidad Unix en Windows | Rendimiento inferior a WSL | | WSL | Windows | Linux real dentro de Windows | Consume más recursos |
Errores comunes al configurar perfiles
Varios errores frecuentes al personalizar la terminal:
- Escapar mal las rutas en Windows: al editar
settings.jsonhay que usar\\en lugar de\para las rutas absolutas. - Olvidar
-NoProfileen PowerShell: cada nueva terminal carga el perfil del usuario, lo que puede tardar varios segundos si tiene muchos módulos. - Definir variables de entorno con nombres en minúsculas en PowerShell, donde la convención es mayúsculas.
- No verificar la ruta del shell tras una actualización del sistema: Git Bash o Python pueden cambiar su ubicación y romper los perfiles.
- Olvidar reiniciar las terminales abiertas tras modificar
settings.json, ya que los cambios solo se aplican a nuevas sesiones.
Mejores prácticas en equipos
Estas recomendaciones ayudan a mantener coherencia entre miembros del equipo:
- Versionar
terminal.integrated.profiles.*en.vscode/settings.jsonpara que todos los miembros compartan los mismos perfiles. - Documentar cada perfil con un comentario en el
README.mdexplicando su propósito y cuándo usarlo. - Establecer un perfil Desarrollo y otro Producción con variables de entorno distintas para evitar confusiones entre entornos.
- Incluir un script
setup.shosetup.ps1que se lance automáticamente al abrir la terminal y verifique las dependencias del proyecto. - Evitar perfiles dependientes de rutas absolutas de usuario (como
C:\Users\juan\...), ya que romperán al compartir la configuración.
Fuentes y referencias
Documentación oficial y recursos externos para profundizar en Visual Studio Code
Documentación oficial de Visual Studio Code
Alan Sastre
Ingeniero de Software y formador, CEO en CertiDevs
Ingeniero de software especializado en Full Stack y en Inteligencia Artificial. Como CEO de CertiDevs, Visual Studio Code es una de sus áreas de expertise. Con más de 15 años programando, 6K seguidores en LinkedIn y experiencia como formador, Alan se dedica a crear contenido educativo de calidad para desarrolladores de todos los niveles.
Más tutoriales de Visual Studio Code
Explora más contenido relacionado con Visual Studio Code y continúa aprendiendo con nuestros tutoriales gratuitos.
Aprendizajes de esta lección
Comprender cómo configurar el shell por defecto en diferentes sistemas operativos. Crear y gestionar perfiles personalizados de terminal con variables de entorno y argumentos específicos. Modificar y extender el PATH para facilitar el acceso a ejecutables. Automatizar comandos de inicio para preparar el entorno de trabajo al abrir la terminal. Integrar y optimizar el uso de WSL y shells específicos como PowerShell o Git Bash en VS Code.