Aller au contenu principal

FAQ

Traduction Bêta Non Officielle

Cette page a été traduite par PageTurner AI (bêta). Non approuvée officiellement par le projet. Vous avez trouvé une erreur ? Signaler un problème →

Avant toute vérification, assurez-vous d'utiliser la dernière version de Oh My Posh et que votre terminal et shell sont à jour.

Mon invite est cassée après la mise à jour vers PowerShell 7.4

PowerShell 7.4 présente un problème d'encodage qui affecte le rendu de Oh My Posh. Vous pouvez contourner ce problème en forçant l'encodage de l'ensemble du shell en UTF8.

[Console]::OutputEncoding = [Text.Encoding]::UTF8
oh-my-posh init pwsh --config ~/custom.omp.json | Invoke-Expression
avertissement

Forcer l'encodage de la session entière en UTF8 peut avoir des effets secondaires indésirables pour d'autres exécutables. Nous ne pouvons en être tenus responsables. Considérez ceci comme une solution temporaire jusqu'à la résolution du problème original dans PowerShell.

Je souhaite désactiver la notification de mise à jour

Vous pouvez désactiver la notification de mise à jour avec cette commande (à exécuter une fois) :

oh-my-posh disable notice

Pour la réactiver, exécutez :

oh-my-posh enable notice

L'invite est lente (délai d'affichage entre les commandes)

Windows

Le délai que vous rencontrez peut être lié aux fonctions de protection en temps réel de votre antivirus.

Pour réduire ce délai, vérifiez que Windows Defender ou votre antivirus principal a une exclusion configurée pour le chemin complet de l'exécutable. Pour trouver ce chemin, exécutez dans PowerShell :

(Get-Command oh-my-posh).Source

Vérifiez également les paramètres de votre antivirus concernant l'analyse active des scripts pendant l'exécution. Même avec des exclusions, certains antivirus continuent d'analyser les scripts, ce qui peut causer un délai perceptible.

attention

Agissez toujours avec prudence pour préserver l'équilibre entre performances et sécurité. Modifier des paramètres de sécurité ou ajouter des exclusions peut exposer votre système à des menaces.

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

Si seuls vos dépôts Git sont lents, essayez d'exécuter git gc pour nettoyer et optimiser le dépôt local.

Si rien ne résout le problème, n'hésitez pas à créer une issue.

Des rectangles s'affichent au lieu des icônes dans mon invite

Votre police ne dispose pas des glyphes étendus nécessaires, contrairement aux Nerd Font. Windows Terminal utilise par défaut Cascadia Code, qui propose une variante powerline (Cascadia Code PL), mais celle-ci manque aussi certaines icônes. Vous pouvez utiliser un thème avec l'indication .minimal, ou adopter une Nerd Font. Consultez la section police pour plus de détails si vos paramètres sont corrects.

Les styles de décoration de texte (gras, atténué) ne fonctionnent pas

Les styles de décoration de texte dépendent des capacités de votre émulateur de terminal.

Sous Linux, un moyen rapide de vérifier la prise en charge des séquences d'échappement est de consulter la base de données terminfo. Voir cette page ArchWiki.

Sous Windows, utilisez Windows Terminal. Il reproduit fidèlement les capacités xterm-256color. Consultez la documentation PowerShell sur la prise en charge des terminaux et ce commentaire GitHub.

Windows Terminal : Espace inattendu entre les segments/texte

Windows Terminal rencontre des problèmes avec le rendu de certains glyphes. Ces problèmes sont dans son backlog. Une solution temporaire consiste à ajouter un caractère invisible en fin de segment (\u2800) ou un caractère de largeur nulle avant l'icône (\u200a).

Si vous n'avez pas encore exporté votre configuration (configuration par défaut ou utilisation du flag --config avec un thème prédéfini), suivez les étapes ici pour l'exporter localement et ajuster le template du segment.

Dans l'exemple ci-dessous, on suppose que l'icône \ueba2 du segment d'exécution présente un espace indésirable après elle dans Windows Terminal.

{
"type": "executiontime",
"template": ""
}

Corrigez cela en ajoutant \u2800 immédiatement après l'icône.

{
"type": "executiontime",
"template": "⠀"
}

Terminaux JetBrains : Les icônes ne s'affichent pas

Leur terminal nécessite des ajustements, car il ne prend en charge que l'UTF-8 et non l'UTF-16. Un ticket est disponible pour suivre ce problème.

Coloration étrange après avoir quitté VIM ou lors de l'utilisation du bootstrap de progression PowerShell

Ce bogue est causé par Windows Terminal et/ou VIM. Deux tickets existent : un chez Windows Terminal et un autre chez VIM.

Conda : Le nom de l'environnement s'affiche devant l'invite

Conda ajoute automatiquement le nom de l'environnement actif devant votre invite. Pour ne compter que sur Oh My Posh pour définir l'invite, configurez ce paramètre pour masquer l'affichage de Conda. Assurez-vous d'ajouter ceci avant d'initialiser Oh My Posh.

conda config --set changeps1 False

Python venv : Modification de l'invite lors de l'activation d'un environnement virtuel

Les environnements virtuels créés avec venv ajoutent automatiquement leur nom à l'invite. Pour désactiver ce comportement, définissez la variable d'environnement VIRTUAL_ENV_DISABLE_PROMPT sur 1. Exemples de fichiers :

Note : Le tilde (~) dans les chemins correspond au répertoire personnel de votre utilisateur.

# Your PowerShell $PROFILE
$env:VIRTUAL_ENV_DISABLE_PROMPT=1

PowerShell : Le terme 'Set-Theme' n'est pas reconnu comme nom d'une applet de commande, fonction, fichier de script ou programme exécutable

Vous devez migrer en suivant ce guide.

PowerShell : Exécution en mode ConstrainedLanguage

Vous voyez ce message car vous avez rencontré l'alerte suivante :

[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

En mode ConstrainedLanguage, PowerShell ne peut pas définir la console en UTF-8, ce qui provoque un rendu incorrect de l'invite. Plusieurs options existent pour configurer l'UTF-8 au niveau du système sous Windows (les autres systèmes ne sont pas concernés).

Pour supprimer le message après configuration manuelle, ajoutez ceci à votre $PROFILE avant d'importer Oh My Posh :

$env:POSH_CONSTRAINED_LANGUAGE = 1

PowerShell : Le terme '.../oh-my-posh.exe' n'est pas reconnu comme nom d'une applet de commande...

Par exemple :

&: 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.

Ce problème survient car PowerShell sous Windows n'utilise pas encore UTF-8 par défaut. Résolvez-le en configurant l'encodage UTF-8 lors de l'initialisation d'Oh My Posh.

Pourquoi est-ce important ?

Si le chemin contient des caractères non-ASCII, PowerShell en mode non-UTF-8 peut fournir un chemin erroné à Oh My Posh, ce qui peut interrompre l'initialisation.

Scénario typique pour un emplacement non-ASCII :

  • Votre ordinateur a un nom d'utilisateur contenant des caractères spéciaux.
  • Votre fichier de configuration se trouve dans votre $HOME.

Modifiez votre $PROFILE, localisez la ligne d'initialisation d'Oh My Posh (comme indiqué ci-dessous), et remplacez-la par :

$previousOutputEncoding = [Console]::OutputEncoding
[Console]::OutputEncoding = [Text.Encoding]::UTF8
try {
oh-my-posh init pwsh --config ~/custom.omp.json | Invoke-Expression
} finally {
[Console]::OutputEncoding = $previousOutputEncoding
}

Alternative : Configurez l'ensemble du shell en UTF-8. (Attention : Des effets secondaires indésirables peuvent survenir.) Ajoutez cette ligne en tête de votre $PROFILE :

$OutputEncoding = [console]::InputEncoding = [console]::OutputEncoding = New-Object System.Text.UTF8Encoding

Zsh : Aucun historique de commandes (Ctrl+R ne fonctionne pas)

Ce problème survient lorsque vous utilisez zsh standard avec Oh My Posh. Corrigez-le en ajoutant cette configuration à ~/.zshrc.

HISTFILE=~/.zsh_history
HISTSIZE=10000
SAVEHIST=10000
setopt appendhistory

ZSH : Aucune fonction shell 'zle-line-init' trouvée

Ceci est probablement dû à une double initialisation d'Oh My Posh dans votre .zshrc. Supprimez l'une des lignes. Voir ici.

Fish : Afficher le mode de liaison actuel (Vim)

Par défaut, Oh My Posh ne regénère pas l'invite (c'est-à-dire ne crée pas une nouvelle invite) tant qu'une nouvelle commande n'est pas exécutée. Vous devez donc exporter $fish_bind_mode vers FISH__BIND_MODE et appeler la fonction omp_repaint_prompt pour regénérer l'invite lorsque $fish_bind_mode change :

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

Ensuite, masquez la fonction fish_default_mode_prompt pour l'empêcher d'afficher le mode actuel :

function fish_default_mode_prompt --description "Display vi prompt mode"
# This function is masked and does nothing
end

Après cela, vous pouvez utiliser la valeur dans un modèle. L'exemple suivant reproduit l'exemple de la documentation Fish :

{
"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 : Intégration avec les raccourcis Alt+← et Alt+→ liés à prevd et nextd

Fish prend en charge l'utilisation des raccourcis Alt+← (Alt+Gauche) et Alt+→ (Alt+Droite) pour naviguer dans l'historique des répertoires.

Pour qu'oh-my-posh mette à jour le contexte du répertoire lors de la navigation dans l'historique, utilisez une fonction qui appelle omp_repaint_prompt lorsque la variable $PWD change :

function rerender_on_dir_change --on-variable PWD
omp_repaint_prompt
end

Après la mise à jour de ma Nerd Font, l'invite affiche des caractères inconnus

Nerd Fonts a déplacé les icônes vers un emplacement différent dans la police pour la v3. Cela peut entraîner l'affichage de caractères inconnus dans l'invite. Une migration intégrée dans Oh My Posh permet de résoudre ce problème.

Pour migrer, exécutez la commande suivante :

oh-my-posh config migrate glyphs --write

Cela mettra à jour votre fichier de configuration pour utiliser les nouveaux emplacements de glyphes. Notez qu'ils peuvent paraître différents, car les icônes elles-mêmes ont également été mises à jour. Une sauvegarde de la configuration actuelle est disponible au même emplacement avec l'extension .bak.

Xonsh : L'invite droite saute en bas de l'écran

Il s'agit d'un problème connu avec Xonsh. Le suivi de ce problème est disponible ici.