لقد كانت رحلة رائعة لـ Oh Myposh ، لكن الوقت قد حان لتصويره. لم يعد المطورون في الوقت الحاضر يلتزمون بقذيفة/لغة واحدة ، فهي جميع الأدوات التي نستخدمها لحل مشكلة معينة. الشيء نفسه يحتاج إلى التقدم إلى يا فاخرة. حان الوقت للتكيف مع تلك الفلسفة.
لهذا السبب يدخل هذا الإصدار من OH My Porh وضع الصيانة أثناء العمل بجد على إخراج V3 من الباب. بالنظر إلى أن V3 مختلف تمامًا تحت غطاء محرك السيارة ، يتم استضافته بشكل منفصل في الوقت الحالي. من منظور المستخدم ، يجب أن يعطي نفس التجربة خارج الصندوق ، مع ميزة إضافية مفادها أن السمات المخصصة هي من الدرجة الأولى ، ولا يوجد مواطن رمز.
Install-Module oh - my - posh - Scope CurrentUser - AllowPrereleaseالوثائق متوفرة أيضًا والتي يجب أن تعطي تجربة أفضل من هذه القراءة خلال السنوات القليلة الماضية :-)
إذا كنت مطورًا يتطلع إلى إضافة وظائف ، فيرجى إلقاء نظرة على V3 لمعرفة ما إذا كان موجودًا بالفعل هناك. إذا لم يكن الأمر كذلك ، فلا تتردد في إنشاء مشكلة أو علاقات عامة على V3 ، وسأقبل فقط إصلاحات الأخطاء على V2 من الآن فصاعدًا .
محرك موضوع لـ PowerShell مستوحى من العمل الذي أنجزه كريس بنتري على PS-Config و Oh-My-Zsh على OSX و Linux (وبالتالي الاسم).
يمكن العثور على مزيد من المعلومات حول سبب قيامي بهذا على مدونتي.

سمات:
يجب عليك استخدام مضيف وحدة تحكم حديثة مثل Conemu أو Alacritty أو Terminus أو Hyper أو Flusterminal أو محطة Windows الرسمية لتجربة طرفية رائعة على النوافذ.
هناك طرق متعددة لاكتساب Windows Terminal - من متجر Microsoft أو Github repo أو طرق سطر الأوامر أدناه:
عبر Winget (مدير الحزمة الرسمية لنظام التشغيل Windows):
winget install -- id = Microsoft.WindowsTerminal - eعبر الشوكولاتة:
choco install microsoft - windows - terminalعبر السبق الصحفي:
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 )لا تنس أيضًا الإعدادات الفاخرة--git نفسها (قم بتمكين مؤشر المخبأ على سبيل المثال):
$GitPromptSettings إخفاء username@domain عندما لا يكون في آلة افتراضية للموضوعات Agnoster و Fish و Honukai و Paradox و Sorin:
$DefaultUser = ' yourUsernameHere ' Set-Theme : تعيين موضوع من دليل الموضوعات. إذا لم يتم العثور على تطابق ، فلن يتم تغييره. الإكمال التلقائي متاح لإدراج الموضوعات المتاحة وإكمالها.
Set-Theme paradox Show-ThemeColors : عرض الألوان المستخدمة من قبل السمة

Show-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- Set-CursorUp ، Set-Newline أو إضافة منطقك الخاص تمامًا.
لاختبار الإخراج في Conemu ، فقط قم بالتبديل إلى موضوعك:
Set-Theme mythemeإذا كنت ترغب في تضمين موضوعك في Oh-My-Posh ، فأرسل لي العلاقات العامة وسأحاول تقديم تعليقات في أسرع وقت ممكن.
هراء سعيد!
نظرًا لأنه يبدو أن الوصول إلى معلومات المكدس عند استخدام PUSTD/POPD أمر مستحيل من داخل السمة ، يمكنك استخدام حل بديل اقترحه Jonathan Leech-Pepin. في $PROFILE ، أضف متغيرًا بمثابة مؤشر محدد بشكل صحيح لجلب سياق المكدس:
$getStackContext = { Get-Location - Stack}بعد ذلك ، في السمة المخصصة ، قم بالوصول إلى المعلومات التي تريد عرضها:
$stackCount = ( & $getStackContext ).count هذا ناتج عن وظيفة ConsoleTitle . كما أوضح أندرو ستانتون نورسي ، فإنه يرتبط بكيفية عمل المحطات مع رموز OSC. يتمثل الإصلاح في تعطيل وظيفة ConsoleTitle عندما في ITERM2 عن طريق إضافة المقتطف التالي إلى $PROFILE .
if ( $ env: LC_TERMINAL -eq " iTerm2 " ) {
$ThemeSettings .Options.ConsoleTitle = $false
}