Veelgestelde vragen
Deze pagina is vertaald door PageTurner AI (beta). Niet officieel goedgekeurd door het project. Een fout gevonden? Probleem melden →
Controleer eerst of je de nieuwste versie van Oh My Posh gebruikt en of je terminal en shell up-to-date zijn.
Mijn prompt is defect na upgrade naar PowerShell 7.4
PowerShell 7.4 heeft een probleem met codering dat de weergave van Oh My Posh beïnvloedt. Je kunt dit omzeilen door de hele shell naar UTF8 te forceren.
[Console]::OutputEncoding = [Text.Encoding]::UTF8
oh-my-posh init pwsh --config ~/custom.omp.json | Invoke-Expression
Het forceren van de hele sessie naar UTF8 kan ongewenste bijwerkingen hebben voor andere uitvoerbare bestanden. Wij kunnen niet aansprakelijk worden gesteld hiervoor, beschouw dit als een tijdelijke oplossing tot het oorspronkelijke PowerShell probleem is opgelost.
Ik wil de upgrademelding uitschakelen
Je kunt de upgrademelding uitschakelen met dit eenmalige commando:
oh-my-posh disable notice
Wil je hem weer inschakelen, voer dan uit:
oh-my-posh enable notice
De prompt is traag (vertraging bij tonen tussen commando's)
De vertraging die je ervaart kan verband houden met realtime-beschermingsfuncties van antivirussoftware.
Om deze vertraging mogelijk te verminderen, zorg dat Windows Defender of je primaire antivirussoftware een uitzondering heeft ingesteld voor het volledige pad van het uitvoerbare bestand. Je vindt dit pad door dit commando in PowerShell uit te voeren:
(Get-Command oh-my-posh).Source
Controleer ook je antivirusinstellingen voor functies die scripts actief scannen tijdens uitvoering. Zelfs met ingestelde uitzonderingen blijven sommige antivirusprogramma's scripts scannen, wat vertraging kan veroorzaken.
Houd altijd een balans tussen systeemprestaties en beveiliging. Aanpassen van beveiligingsinstellingen of toevoegen van uitzonderingen kan je systeem blootstellen aan risico's.
- 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).
Als alleen je Git-repopaden traag zijn, probeer dan git gc uit te voeren om de lokale repository op te schonen en optimaliseren.
Als niets lijkt te werken, kun je gerust een issue aanmaken.
Rechthoeken in plaats van pictogrammen in mijn prompt
Je gebruikte lettertype bevat niet de benodigde uitgebreide glyfenset zoals Nerd Font die wel heeft.
Windows Terminal gebruikt standaard Cascadia Code met een powerline-gepatchte variant genaamd Cascadia Code PL,
maar ook die mist bepaalde iconen. Je kunt terugvallen op thema's met .minimal aanduiding,
of een Nerd Font gebruiken. Bekijk de lettertype sectie voor meer context als je denkt aan alle voorwaarden te voldoen.
Tekstdecoratiestijlen zoals vet en gedimd werken niet
Tekstdecoratiestijlen zijn afhankelijk van de mogelijkheden van je terminal-emulator.
Een snelle manier om te controleren of je terminal een specifieke stijlescape-sequence ondersteunt, is via de terminfo-database op Linux.
Raadpleeg deze ArchWiki-pagina.
Gebruik op Windows de Windows Terminal. Deze volgt nauwkeurig de mogelijkheden van xterm-256color.
Zie de PowerShell-documentatie over terminalondersteuning en deze GitHub-commentaar.
Windows Terminal: Onverwachte ruimte tussen segmenten/tekst
Windows Terminal heeft problemen met het weergeven van bepaalde glyphs. Deze staan op hun backlog.
Een tijdelijke oplossing is een onzichtbaar teken aan het einde (\u2800) of een nuldikte-teken (\u200a) vóór het pictogram.
Als je de configuratie nog niet hebt geëxporteerd (standaardinstelling of bij gebruik van --config met een vooraf gedefinieerd thema), kun je
hier de stappen volgen om deze naar een lokaal bestand te exporteren, zodat je de template van het segment kunt aanpassen.
In het onderstaande voorbeeld wordt aangenomen dat het pictogram \ueba2 van het uitvoeringssegment onverwachte ruimte erna vertoont in Windows Terminal.
- json
- yaml
- toml
{
"type": "executiontime",
"template": ""
}
type: executiontime
template:
type = "executiontime"
template = ""
Pas dit aan door \u2800 direct na het pictogram toe te voegen.
- json
- yaml
- toml
{
"type": "executiontime",
"template": "⠀"
}
type: executiontime
template: ⠀
type = "executiontime"
template = "⠀"
Jetbrains terminals: Pictogrammen worden niet weergegeven
Ze moeten aan hun terminal werken; deze ondersteunt om de een of andere reden alleen UTF-8 en niet UTF-16. Er is een issue beschikbaar voor opvolging.
Vreemde kleuren na afsluiten VIM of bij PowerShell progress bootstrap
Deze bug wordt veroorzaakt door Windows Terminal en/of VIM. Er zijn twee issues hiervoor, één bij Windows Terminal en één bij VIM.
Conda: Omgevingsnaam getoond vóór de prompt
Conda voegt automatisch de naam van je huidige omgeving toe vóór de prompt. Om volledig op Oh My Posh te vertrouwen voor de prompt, kun je deze instelling configureren om het te verbergen. Voeg dit toe vóór de initialisatie van Oh My Posh.
conda config --set changeps1 False
Python venv: Prompt verandert bij activeren virtuele omgeving
Virtuele omgevingen gemaakt met venv voegen automatisch de naam van de actieve omgeving aan de prompt toe.
Om dit gedrag uit te schakelen, stel de omgevingsvariabele VIRTUAL_ENV_DISABLE_PROMPT in op 1. Voorbeeldbestanden:
Opmerking: Tilde (~) in paden verwijst naar je thuismapgebruiker.
- 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: 'Set-Theme' wordt niet herkend als cmdlet, functie, script of programma
Je moet migreren met behulp van deze handleiding.
PowerShell: Draait in ConstrainedLanguage-modus
Je bent hier omdat je dit bericht hebt gezien:
[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
In ConstrainedLanguage-modus kunnen we de console niet instellen op UTF-8, waardoor de prompt incorrect wordt weergegeven. Er zijn enkele opties om de console op UTF-8 in te stellen vanuit het besturingssysteem op Windows; andere systemen zouden geen last moeten hebben.
Om het bericht na handmatige configuratie te verwijderen, voeg dit toe aan je $PROFILE vóór het importeren van Oh My Posh:
$env:POSH_CONSTRAINED_LANGUAGE = 1
PowerShell: '.../oh-my-posh.exe' wordt niet herkend als cmdlet...
Bijvoorbeeld:
&: 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.
Het probleem is dat PowerShell op Windows standaard nog niet op UTF-8 staat. Los dit op door de shell in te stellen op UTF-8 tijdens de initialisatie van Oh My Posh.
Als de locatie niet-ASCII tekens bevat, kan niet-UTF-8 PowerShell een verkeerd pad aan Oh My Posh doorgeven, wat de initialisatie kan verstoren.
Scenario voor niet-ASCII locaties:
- Je computer heeft een niet-ASCII gebruikersnaam.
- Je configuratiebestand staat onder je
$HOME.
Bewerk hiervoor je $PROFILE, zoek de regel die Oh My Posh initialiseert (hieronder gemarkeerd) en wijzig deze in:
$previousOutputEncoding = [Console]::OutputEncoding
[Console]::OutputEncoding = [Text.Encoding]::UTF8
try {
oh-my-posh init pwsh --config ~/custom.omp.json | Invoke-Expression
} finally {
[Console]::OutputEncoding = $previousOutputEncoding
}
Alternatief: stel de hele shell in op UTF-8. (Let op: ongewenste neveneffecten kunnen optreden.) Voeg deze regel toe bovenaan je $PROFILE:
$OutputEncoding = [console]::InputEncoding = [console]::OutputEncoding = New-Object System.Text.UTF8Encoding
Zsh: Geen commandogeschiedenis (Ctrl+R werkt niet)
Dit probleem treedt op wanneer je plain zsh combineert met Oh My Posh.
Je kunt dit oplossen door de juiste configuratie aan ~/.zshrc toe te voegen.
HISTFILE=~/.zsh_history
HISTSIZE=10000
SAVEHIST=10000
setopt appendhistory
ZSH: Geen shellfunctie 'zle-line-init'
Dit wordt hoogstwaarschijnlijk veroorzaakt door twee Oh My Posh init-regels in je .zshrc. Verwijder één van beide. Zie hier.
Fish: Huidige bind-modus (Vim) weergeven
Standaard zal Oh My Posh de prompt niet opnieuw renderen (d.w.z. een nieuwe prompt genereren) totdat een nieuw commando wordt uitgevoerd. Je moet daarom
$fish_bind_mode exporteren naar FISH__BIND_MODE en de functie omp_repaint_prompt aanroepen om de prompt opnieuw te renderen wanneer
$fish_bind_mode verandert:
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
Vervolgens moet je de fish_default_mode_prompt functie maskeren om te voorkomen dat deze de huidige modus weergeeft:
function fish_default_mode_prompt --description "Display vi prompt mode"
# This function is masked and does nothing
end
Daarna kun je de waarde in een template gebruiken. Het volgende voorbeeld repliceert het voorbeeld in de Fish-documentatie:
- 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: Integreren met Alt+← en Alt+→ koppelingen naar prevd en nextd
Fish ondersteunt Alt+← (Alt+Links) en Alt+→ (Alt+Rechts) bindingen om door de mapgeschiedenis te navigeren.
Om ervoor te zorgen dat oh-my-posh de mapcontext bijwerkt tijdens het navigeren door de mapgeschiedenis, gebruik je een functie die omp_repaint_prompt aanroept wanneer de $PWD variabele verandert:
function rerender_on_dir_change --on-variable PWD
omp_repaint_prompt
end
Na update Nerd Font toont prompt onbekende tekens
Nerd Fonts heeft de iconen in versie 3 naar een andere locatie in het lettertype verplaatst. Dit kan ervoor zorgen dat de prompt onbekende tekens weergeeft. Oh My Posh heeft een ingebouwde migratie om dit op te lossen.
Voer het volgende commando uit om te migreren:
oh-my-posh config migrate glyphs --write
Dit werkt je configuratiebestand bij om de nieuwe glyfposities te gebruiken. Houd er rekening mee dat de iconen er mogelijk anders uitzien, omdat
ze ook de iconen zelf hebben bijgewerkt. Een back-up van de huidige configuratie vind je op dezelfde locatie met een .bak extensie.
Xonsh: Rechterprompt springt naar schermonderzijde
Dit is een bekend probleem met Xonsh. Het issue wordt hier bijgehouden.