Saltar al contenido principal

General

Traducción Beta No Oficial

Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →

Oh My Posh construye tu prompt usando bloques (como piezas de Lego) que contienen uno o más segmentos. Una configuración muy simple podría verse así. El formato predeterminado es json, pero también soportamos toml y yaml. Existe un esquema disponible que se mantiene actualizado y ayuda con autocompletado y validación de la configuración.

información

Existen varios temas disponibles que son básicamente configuraciones predefinidas. Puedes usarlos tal cual, o como punto de partida para crear tu propia configuración.

{
"$schema": "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json",
"final_space": true,
"version": 4,
"blocks": [
{
"type": "prompt",
"alignment": "left",
"segments": [
{
"type": "path",
"style": "powerline",
"powerline_symbol": "\uE0B0",
"foreground": "#ffffff",
"background": "#61AFEF",
"options": {
"style": "folder"
}
}
]
}
]
}

Con esta configuración, se renderiza un único segmento powerline que muestra el nombre de la carpeta actual. Para establecer esta configuración junto con un ejecutable de Oh My Posh, usa el flag --config para indicar la ruta a un archivo que contenga el código anterior. El flag --shell universal se usa para imprimir el prompt sin caracteres de escape, permitiendo verlo como aparecería dentro de una función de prompt de tu shell.

precaución

El siguiente comando no persistirá la configuración en tu shell, solo imprimirá el prompt en tu terminal. Si quieres usar tu propia configuración permanentemente, ajusta la configuración del prompt para usar tu configuración personalizada.

oh-my-posh print primary --config sample.json --shell uni

Si todo va según lo planeado, deberías ver el prompt impreso en la línea inferior. Si ves muchos cuadros con signos de interrogación, configura tu terminal para usar una fuente compatible antes de continuar.

consejo

El flag --config puede aceptar tanto rutas locales como archivos de configuración alojados remotamente.

Por ejemplo, la siguiente es una invocación válida de --config: --config 'https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/jandedobbeleer.omp.json'

Configuraciones

NameTypeDefaultDescription
final_spacebooleanwhen true adds a space at the end of the prompt
pwdstringnotify terminal of current working directory, values can be osc99, osc7 or osc51 depending on your terminal. Supports templates
terminal_backgroundstringcolor - terminal background color, set to your terminal's background color when you notice black elements in Windows Terminal or the Visual Studio Code integrated terminal
accent_colorstringcolor - accent color, used as a fallback when the accent color is not supported
varmap[string]anyconfig variables to use in templates. Can be any value
shell_integrationbooleanfalseenable shell integration using FinalTerm's OSC sequences. Works in bash, cmd (Clink v1.14.25+), fish, powershell and zsh
enable_cursor_positioningbooleanfalseenable fetching the cursor position in bash and zsh to allow automatic hiding of leading newlines when at the top of the shell
patch_pwsh_bleedbooleanfalsepatch a PowerShell bug where the background colors bleed into the next line at the end of the buffer (can be removed when this is merged)
upgradeUpgradeenable auto upgrade or the upgrade notice. See Upgrade
iterm_features[]stringfalseenable iTerm2 specific features:
  • prompt_mark: add the iterm2_prompt_mark function for supported shells
  • current_dir: expose the current directory for iTerm2
  • remote_host: expose the current remote and user for iTerm2
mapsMapsa list of custom text mappings
asyncbooleanfalseload the prompt async. Will either load the standard prompt, or allow you to start typing right away. Supported for pwsh, powershell, zsh, bash and fish
versionint4the config version, currently at 4
extendsstringthe configuration to extend from

Mapas

NameTypeDescription
user_nameobjecttext replacement mapping for user names
host_nameobjecttext replacement mapping for host names
shell_nameobjecttext replacement mapping for shell names. This modifies the .Shell global property.
{
"maps": {
"user_name": {
"jan": "🚀",
"root": "⚡"
},
"host_name": {
"laptop123": "work"
}
}
}

Extensión

La clave extends permite extender una configuración existente. Esto es útil cuando quieres construir sobre una configuración base sin duplicar todos los ajustes, como con un tema. El valor debe ser una ruta a otro archivo de configuración, que puede ser local o remoto.

La sustitución de valores se hace repitiendo la clave en la nueva configuración. Por ejemplo, si quieres cambiar el accent_color en una configuración base, puedes hacerlo especificando la clave accent_color en tu nueva configuración. El nuevo valor sobrescribirá el de la configuración base.

Para sobrescribir segmentos y bloques, especifica el bloque usando el mismo type y alignment que la configuración base. Luego puedes añadir o modificar segmentos dentro de ese bloque. Los segmentos se emparejan por su alias o type, permitiendo añadir nuevos segmentos o modificar existentes sin afectar el resto.

Para casos más avanzados, puedes especificar el índice del block o segment a sobrescribir. Esto permite modificar blocks o segments en posiciones específicas de la configuración. Ten en cuenta que el índice es 1-based, por lo que el primer block o segment tiene índice 1.

Validación con JSON Schema

Como se mencionó, las configuraciones de Oh My Posh pueden usar JSON Schema para validar su contenido. Las configuraciones deben incluir un enlace al documento de esquema externo que define la estructura y contenido adecuados. Si tu editor está configurado para usar JSON Schema, comparará tu configuración con este documento y mostrará advertencias por discrepancias.

Por ejemplo, dado este código:

...
"segments": [
{
"type": "an_invalid_entry",
"template": "{{ if gt .Code 0 }}\uf134{{ end }}",
}
]
...

Se generarán advertencias para type, ya que an_invalid_entry no está en los valores aceptados, y también para el ítem completo del segmento (entre {}), porque falta la clave obligatoria style. Aprovecha estas advertencias, ignorarlas es bajo tu propio riesgo.

Formatos Aceptados

Oh My Posh admite tres formatos de archivo para configuraciones: json, yaml y toml.

Existen varios convertidores para transformar entre estos formatos, aunque no son perfectos y requerirán ajustes manuales. Cabe destacar que la implementación del esquema para json se define así:

{
"$schema": "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json"
}

Mientras que para yaml:

# yaml-language-server: $schema=https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json

Los convertidores no detectarán este cambio, por lo que deberás ajustarlo manualmente.