Preguntas frecuentes
Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →
Antes de validar cualquier cosa, asegúrate de estar usando la última versión de Oh My Posh y que tu terminal y shell estén actualizados.
Mi prompt está roto después de actualizar a PowerShell 7.4
PowerShell 7.4 tiene un problema de codificación que afecta la renderización de Oh My Posh. Puedes solucionarlo temporalmente forzando toda la shell a UTF8.
[Console]::OutputEncoding = [Text.Encoding]::UTF8
oh-my-posh init pwsh --config ~/custom.omp.json | Invoke-Expression
Forzar toda la sesión a UTF8 puede tener efectos secundarios no deseados para otros ejecutables. No nos hacemos responsables de ello. Considera esto una solución temporal hasta que se resuelva el problema original de PowerShell.
Quiero desactivar el aviso de actualización
Puedes desactivar el aviso de actualización ejecutando este comando una vez:
oh-my-posh disable notice
Si quieres reactivarlo posteriormente, ejecuta:
oh-my-posh enable notice
El prompt es lento (retraso al mostrar el prompt entre comandos)
La demora que experimentas podría estar relacionada con las funciones de protección en tiempo real del software antivirus.
Para mitigar esta demora, asegúrate de que Windows Defender o tu antivirus principal tengan configurada una exclusión para la ruta completa del ejecutable. Para identificar la ruta completa del ejecutable, ejecuta este comando en PowerShell:
(Get-Command oh-my-posh).Source
Además, revisa la configuración de tu antivirus para funciones que escaneen activamente scripts durante su ejecución. Incluso con exclusiones, algunos antivirus pueden seguir escaneando scripts, lo que introduce retrasos notables.
Procede siempre con precaución para mantener el equilibrio entre rendimiento del sistema y seguridad. Modificar configuraciones de seguridad o agregar exclusiones puede exponer tu sistema a amenazas potenciales.
- powershell
- others
You can use the oh-my-posh debug functionality to see where Oh My Posh spends its time.
In case there's no clear culprit (timings indicate everything's OK), chances are some modules are the culprit.
We bootstrap a few PowerShell modules to maximize compatibility, but sometimes these can introduce unwanted side-effects.
The modules we support are:
- posh-git
You can use Oh My Posh's built-in debug functionality to identify slow segments.
oh-my-posh debug
Whenever there's a segment that spikes, see if there might be updates to the underlying functionality (usually shell commands).
Si solo las rutas de tus repositorios Git son lentas, prueba ejecutar git gc para limpiar y optimizar el repositorio local.
Si nada resuelve el problema, no dudes en crear un issue.
Hay rectángulos en lugar de iconos en mi prompt
La fuente que usas no incluye el conjunto extendido de glifos necesario, como sí lo hace Nerd Font.
Windows Terminal incluye por defecto Cascadia Code, que tiene una variante parcheada para powerline llamada Cascadia Code PL,
pero incluso esta carece de ciertos iconos interesantes. Puedes recurrir a cualquier tema con la indicación .minimal,
o usar una Nerd Font. Consult la sección de fuentes para más contexto si cumples todas las condiciones correctas.
Los estilos de decoración de texto (negrita, atenuado) no funcionan
Los estilos de decoración de texto dependen de las capacidades de tu emulador de terminal.
Una forma rápida de verificar si tu terminal soporta una secuencia de escape específica es consultar la base de datos terminfo en Linux.
Consulta esta página en ArchWiki.
Si estás en Windows, usa Windows Terminal. Implementa fielmente las capacidades de xterm-256color.
Revisa la documentación de PowerShell sobre soporte de terminal y este comentario en GitHub.
Windows Terminal: Espacio inesperado entre segmentos/texto
Windows Terminal tiene problemas para renderizar ciertos glifos. Estos problemas están en su backlog.
Una solución temporal es usar un carácter invisible al final (\u2800) o un carácter de ancho cero (\u200a) antes del icono.
Si aún no exportaste la configuración (es el valor por defecto, o usas el flag --config con un tema predefinido), puedes seguir
los pasos aquí para exportarla a un archivo local y así ajustar la template del segmento.
En el ejemplo siguiente, se asume que el icono \ueba2 del segmento de ejecución tiene un espacio inesperado después en Windows Terminal.
- json
- yaml
- toml
{
"type": "executiontime",
"template": ""
}
type: executiontime
template:
type = "executiontime"
template = ""
Ajústalo añadiendo \u2800 inmediatamente después del icono.
- json
- yaml
- toml
{
"type": "executiontime",
"template": "⠀"
}
type: executiontime
template: ⠀
type = "executiontime"
template = "⠀"
Terminales Jetbrains: Los iconos no se renderizan
Necesitan trabajar en su terminal; de alguna manera solo soporta UTF-8 y no UTF-16. Hay un issue disponible para seguimiento aquí.
Coloración extraña al salir de VIM o al usar PowerShell progress bootstrap
Este error es causado por Windows Terminal y/o VIM. Hay dos issues para esto: uno en Windows Terminal y otro en VIM.
Conda: Nombre del entorno aparece delante del prompt
Conda automáticamente antepondrá al prompt el nombre del entorno en el que te encuentras. Para confiar únicamente en Oh My Posh para establecer el prompt, puedes configurar lo siguiente para ocultarlo. Asegúrate de añadir esto antes de inicializar Oh My Posh.
conda config --set changeps1 False
Python venv: El prompt cambia al activar entorno virtual
Los entornos virtuales creados con venv añaden automáticamente el nombre del entorno activo al prompt.
Para deshabilitar este comportamiento, establece la variable de entorno VIRTUAL_ENV_DISABLE_PROMPT en 1. Archivos de ejemplo:
Nota: La tilde (~) en las rutas se refiere al directorio home de tu usuario.
- powershell
- fish
- others
# Your PowerShell $PROFILE
$env:VIRTUAL_ENV_DISABLE_PROMPT=1
# ~/.config/fish/config.fish
set -x VIRTUAL_ENV_DISABLE_PROMPT 1
# ~/.bashrc (bash) or ~/.zprofile or ~/.zshrc (zsh)
export VIRTUAL_ENV_DISABLE_PROMPT=1
PowerShell: El término 'Set-Theme' no se reconoce como nombre de cmdlet, función, archivo de script o programa ejecutable
Necesitas migrar usando la siguiente guía.
PowerShell: Ejecutando en modo ConstrainedLanguage
Estás aquí porque has visto el siguiente mensaje:
[WARNING] ConstrainedLanguage mode detected, unable to set console to UTF-8.
When using PowerShell in ConstrainedLanguage mode, please set the
console mode manually to UTF-8. See here for more information:
https://ohmyposh.dev/docs/faq#powershell-running-in-constrainedlanguage-mode
Cuando PowerShell se ejecuta en modo ConstrainedLanguage, no podemos establecer la consola en UTF-8. Esto hará que el prompt se renderice incorrectamente. Hay algunas opciones para configurar la consola en UTF-8 desde el sistema operativo en Windows; otros sistemas no deberían verse afectados.
Para eliminar el mensaje después de una configuración manual, añade lo siguiente a tu $PROFILE antes de importar Oh My Posh:
$env:POSH_CONSTRAINED_LANGUAGE = 1
PowerShell: El término '.../oh-my-posh.exe' no se reconoce como nombre de cmdlet...
Por ejemplo:
&: The term 'C:/Users/TommiGr├╢nlund/.oh-my-posh/oh-my-posh.exe' is not recognized as a name of a cmdlet, function, script file, or executable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
El problema es que PowerShell en Windows aún no usa UTF-8 por defecto. Resuelve el problema configurando el shell a UTF-8 durante la inicialización de Oh My Posh.
Si la ubicación contiene caracteres no ASCII, PowerShell sin UTF-8 podría proporcionar una ruta incorrecta a Oh My Posh, lo que puede romper la inicialización.
Escenario para ubicación con caracteres no ASCII:
- Tu computadora tiene un nombre de usuario no ASCII.
- Tu archivo de configuración está bajo tu
$HOME.
Para hacerlo, edita tu $PROFILE, encuentra la línea que inicializa Oh My Posh (como se muestra resaltado abajo) y cámbiala por:
$previousOutputEncoding = [Console]::OutputEncoding
[Console]::OutputEncoding = [Text.Encoding]::UTF8
try {
oh-my-posh init pwsh --config ~/custom.omp.json | Invoke-Expression
} finally {
[Console]::OutputEncoding = $previousOutputEncoding
}
Alternativamente, configura todo el shell en UTF-8. (Ten en cuenta: Pueden ocurrir efectos secundarios no deseados). Añade la siguiente línea al inicio de tu $PROFILE:
$OutputEncoding = [console]::InputEncoding = [console]::OutputEncoding = New-Object System.Text.UTF8Encoding
Zsh: Sin historial de comandos (Ctrl+R no funciona)
Este problema ocurre cuando usas zsh plano en combinación con Oh My Posh.
Puedes solucionarlo añadiendo la configuración correcta a ~/.zshrc.
HISTFILE=~/.zsh_history
HISTSIZE=10000
SAVEHIST=10000
setopt appendhistory
ZSH: No existe la función de shell 'zle-line-init'
Esto probablemente se debe a tener dos líneas de inicialización de Oh My Posh en tu .zshrc. Elimina una de ellas. Consulta aquí.
Fish: Mostrar modo actual de vinculación (Vim)
Por defecto, Oh My Posh no volverá a renderizar el prompt (es decir, generar un nuevo prompt) hasta que se ejecute un nuevo comando. Por lo tanto, debes exportar $fish_bind_mode a FISH__BIND_MODE y llamar a la función omp_repaint_prompt para volver a renderizar el prompt cuando $fish_bind_mode cambie:
function rerender_on_bind_mode_change --on-variable fish_bind_mode
if test "$fish_bind_mode" != paste -a "$fish_bind_mode" != "$FISH__BIND_MODE"
set -gx FISH__BIND_MODE $fish_bind_mode
omp_repaint_prompt
end
end
Luego, enmascara la función fish_default_mode_prompt para evitar que muestre el modo actual:
function fish_default_mode_prompt --description "Display vi prompt mode"
# This function is masked and does nothing
end
Después, puedes usar el valor en una plantilla. Lo siguiente replica el ejemplo de la documentación de Fish:
- json
- yaml
- toml
{
"type": "text",
"template": "{{ if eq .Env.FISH__BIND_MODE \"default\" }}<red>[N]</>{{ else if eq .Env.FISH__BIND_MODE \"insert\" }}<green>[I]</>{{ else if eq .Env.FISH__BIND_MODE \"replace_one\" }}<green>[R]</>{{ else if eq .Env.FISH__BIND_MODE \"visual\"}}<brmagenta>[V]</>{{ else }}<red>[?]</>{{ end }}"
}
type: text
template: '{{ if eq .Env.FISH__BIND_MODE "default" }}<red>[N]</>{{ else if eq
.Env.FISH__BIND_MODE "insert" }}<green>[I]</>{{ else if eq
.Env.FISH__BIND_MODE "replace_one" }}<green>[R]</>{{ else if eq
.Env.FISH__BIND_MODE "visual"}}<brmagenta>[V]</>{{ else }}<red>[?]</>{{ end
}}'
type = "text"
template = "{{ if eq .Env.FISH__BIND_MODE \"default\" }}<red>[N]</>{{ else if eq .Env.FISH__BIND_MODE \"insert\" }}<green>[I]</>{{ else if eq .Env.FISH__BIND_MODE \"replace_one\" }}<green>[R]</>{{ else if eq .Env.FISH__BIND_MODE \"visual\"}}<brmagenta>[V]</>{{ else }}<red>[?]</>{{ end }}"
Fish: Integrar con enlaces Alt+← y Alt+→ a prevd y nextd
Fish permite usar los atajos Alt+← (Alt+Izquierda) y Alt+→ (Alt+Derecha) para navegar por el historial de directorios.
Para que oh-my-posh actualice el contexto del directorio mientras navegas por el historial, usa una función que llame a omp_repaint_prompt cuando la variable $PWD cambie:
function rerender_on_dir_change --on-variable PWD
omp_repaint_prompt
end
Tras actualizar mi Nerd Font, el prompt muestra caracteres desconocidos
Nerd Fonts movió los iconos a una ubicación diferente en la fuente para la versión 3. Esto puede hacer que el prompt muestre caracteres desconocidos. Oh My Posh incluye una migración incorporada para solucionarlo.
Para migrar, ejecuta el siguiente comando:
oh-my-posh config migrate glyphs --write
Esto actualizará tu archivo de configuración para usar las nuevas ubicaciones de los glifos. Ten en cuenta que pueden verse diferentes, ya que también actualizaron los iconos. Encontrarás una copia de seguridad de la configuración actual en la misma ubicación con extensión .bak.
Xonsh: El prompt derecho salta al fondo de la pantalla
Este es un problema conocido de Xonsh. El problema se está rastreando aquí.