Это была удивительная поездка для Oh Myposh, но пришло время подняться на ступеньку. Разработчики в настоящее время больше не придерживаются одной оболочки/языка, это все инструменты, которые мы используем для решения определенной проблемы. То же самое нужно применить к моему шикарному. Пришло время приспособиться к этой философии.
Вот почему эта версия OH My Posh входит в режим обслуживания, пока я усердно работаю над выходом V3 из двери. Учитывая, что V3 совершенно отличается под капюшоном, он на данный момент находится отдельно. С точки зрения пользователя, он должен дать тот же опыт из коробки, с дополнительным преимуществом, что пользовательские темы являются первым классом, без гражданина кода.
Install-Module oh - my - posh - Scope CurrentUser - AllowPrereleaseТакже доступна документация, которая должна дать лучший опыт, чем этот Readme за последние несколько лет :-)
Если вы разработчик, хотите добавить функциональность, пожалуйста, посмотрите на V3, чтобы увидеть, существует ли он там. Если нет, не стесняйтесь создавать проблему или PR на V3, я буду принимать исправления ошибок на V2 .
Двигатель темы для PowerShell, вдохновленный работой, проделанной Крисом Бенти на PS-Config и Oh-My-Zsh на OSX и Linux (отсюда и название).
Более подробную информацию о том, почему я сделал это, можно найти в моем блоге.

Функции:
Вы должны использовать современный хост консоли, такой как Conemu, Alacritty, Terminus, Hyper, Fluentterminal или официальный терминал Windows, чтобы иметь отличный опыт терминала в Windows.
Существует несколько способов получить терминал Windows - от магазина Microsoft, GitHub Repo или приведенные ниже методы командной линии:
Via Winget (официальный менеджер пакетов для Windows):
winget install -- id = Microsoft.WindowsTerminal - eЧерез шоколадный:
choco install microsoft - windows - terminalЧерез Scoop:
scoop install windows - terminal Шрифты, которые я использую, - это шрифты Powerline, есть отличный репозиторий, содержащий их. Я использую Meslo LG M Regular for Powerline Nerd Font в моей настройке Conemu вместе с пользовательскими цветами. Вы можете найти мою тему здесь.
Если вы заметите странные глифы после установки шрифта по выбору, убедитесь, что глифы доступны (возможно, у них есть другое место в шрифте, если да, отрегулируйте правильный значок $ThemeSettings ). Если это оказывается желаемый персонаж, не поддерживается, выберите другой шрифт.
Вам нужно использовать галерею PowerShell для установки Oh-My-Posh.
Установите Posh-Git и Oh-My-Posh:
Install-Module posh - git - Scope CurrentUser
Install-Module oh - my - posh - Scope CurrentUserВключить подсказку:
# Start the default settings
Set-Prompt
# Alternatively set the desired theme:
Set-Theme Agnoster Если вы запускаете это на PS Core, обязательно установите версию 2.0.0-beta1 PSReadLine
Install-Module - Name PSReadLine - AllowPrerelease - Scope CurrentUser - Force - SkipPublisherCheckЧтобы позволить двигателю редактировать ваш профиль PowerShell:
if ( ! ( Test-Path - Path $PROFILE )) { New-Item - Type File - Path $PROFILE - Force }
notepad $PROFILEДобавьте следующие строки в свой профиль PowerShell:
Import-Module posh - git
Import-Module oh - my - posh
Set-Theme ParadoxПоследняя команда устанавливает тему для консоли. Проверьте список доступных тем ниже.
Перечислите текущую конфигурацию:
$ThemeSettings 
Вы можете настроить настройки, манипулируя $ThemeSettings . Этот пример позволяет настроить символ ветви, используя символ Unicode:
$ThemeSettings .GitSymbols.BranchSymbol = [ char ]::ConvertFromUtf32( 0xE0A0 )Также не забывайте о себе настройки Posh-GIT (например, включите индикацию сдерживания):
$GitPromptSettings Спрячьте свое username@domain , когда не в виртуальной машине для темах агностера, рыбы, хонукай, парадокса и сорина:
$DefaultUser = ' yourUsernameHere ' Set-Theme : Установите тему из каталога тем. Если совпадение не найдено, это не будет изменено. Автозаполнение доступно для перечисления и завершения доступных тем.
Set-Theme paradox Show-ThemeColors : отображать цвета, используемые темой

Show-Colors : Display Colors, настроенные в Conemu

















Если вы хотите создать тему, ее можно легко сделать, добавив файл mytheme.psm1 в папку, указанную в $ThemeSettings.MyThemesLocation (папка по умолчанию ~DocumentsWindowsPowerShellPoshThemes , не стесняйтесь менять).
Единственная требуемая функция-это Write-Theme . Вы можете использовать следующий шаблон, чтобы начать:
# requires -Version 2 -Modules posh -git
function Write-Theme
{
param (
[ bool ]
$lastCommandFailed ,
[ string ]
$with
)
# enter your prompt building logic here
}
$sl = $ global :ThemeSettings # local settings Не стесняйтесь использовать публичные вспомогательные функции Get-VCSStatus , Get-VcsInfo , Get-FormattedRootLocation , Get-ShortPath , Set-CursorForRightBlockWrite , Set-CursorUp , Set-Newline или полностью добавить свою собственную логику.
Чтобы проверить выход в Conemu, просто переключитесь на свою тему:
Set-Theme mythemeЕсли вы хотите включить свою тему в Oh-My-Posh, пришлите мне PR, и я постараюсь дать отзыв как можно скорее.
Счастливой тематики!
Поскольку кажется, что получить доступ к информации о стеке, когда использование Pushd/Popd является своего рода миссией невыполненной из темы, вы можете использовать обходной путь, предложенный Джонатаном Лич-Пепином. В вашем $PROFILE добавьте переменную, которая будет действовать как правильный указатель, чтобы получить контекст стека:
$getStackContext = { Get-Location - Stack}Далее, в вашей пользовательской теме, доступ к информации, которую вы хотите отобразить:
$stackCount = ( & $getStackContext ).count Это вызвано функциональностью ConsoleTitle . Как объяснил Эндрю Стентон-Нурс, это связано с тем, как терминалы работают с кодами OSC. Исправление состоит в том, чтобы отключить функциональность ConsoleTitle , когда в ITERM2 добавили следующий фрагмент в ваш $PROFILE .
if ( $ env: LC_TERMINAL -eq " iTerm2 " ) {
$ThemeSettings .Options.ConsoleTitle = $false
}