มันเป็นการเดินทางที่น่าทึ่งสำหรับ Oh Myposh แต่ถึงเวลาแล้วก็มาถึงแล้ว ทุกวันนี้นักพัฒนาไม่สามารถยึดติดกับเชลล์/ภาษาได้อีกต่อไปพวกเขาเป็นเครื่องมือทั้งหมดที่เราใช้ในการแก้ปัญหาบางอย่าง สิ่งเดียวกันนี้จำเป็นต้องใช้กับ Oh My Posh ถึงเวลาปรับให้เข้ากับปรัชญานั้น
นั่นเป็นเหตุผลที่ Oh My Posh รุ่นนี้เข้าสู่โหมดการบำรุงรักษาในขณะที่ฉันทำงานอย่างหนักเพื่อให้ V3 ออกจากประตู เนื่องจาก V3 นั้นแตกต่างกันอย่างสิ้นเชิงภายใต้ประทุนจึงเป็นโฮสต์แยกต่างหากในตอนนี้ จากมุมมองของผู้ใช้ควรให้ประสบการณ์แบบเดียวกันนอกกรอบโดยมีข้อได้เปรียบเพิ่มเติมว่าธีมที่กำหนดเองเป็นชั้นหนึ่งไม่มีพลเมืองรหัส
Install-Module oh - my - posh - Scope CurrentUser - AllowPrereleaseนอกจากนี้ยังมีเอกสารซึ่งควรให้ประสบการณ์ที่ดีกว่า readme นี้ในช่วงไม่กี่ปีที่ผ่านมา :-)
หากคุณเป็นนักพัฒนาที่ต้องการเพิ่มฟังก์ชั่นโปรดดูที่ V3 เพื่อดูว่ามีอยู่แล้วหรือไม่ หากไม่สามารถสร้างปัญหาหรือประชาสัมพันธ์บน V3 ได้ ฉันจะยอมรับการแก้ไขข้อผิดพลาดใน V2 จากนี้ไปเท่านั้น
กลไกชุดรูปแบบสำหรับ PowerShell ที่ได้รับแรงบันดาลใจจากงานที่ทำโดย Chris Benti ใน PS-CONFIG และ OH-MY-ZSH บน OSX และ Linux (ดังนั้นชื่อ)
ข้อมูลเพิ่มเติมเกี่ยวกับสาเหตุที่ฉันทำสิ่งนี้สามารถพบได้ในบล็อกของฉัน

คุณสมบัติ:
คุณควรใช้โฮสต์คอนโซลที่ทันสมัยเช่น Conemu, Alacritty, Terminus, Hyper, Fluentterminal หรือสถานี Windows อย่างเป็นทางการเพื่อให้ได้ประสบการณ์เทอร์มินัลที่ยอดเยี่ยมบนหน้าต่าง
มีหลายวิธีในการรับเทอร์มินัล Windows - จาก Microsoft Store, GitHub Repo หรือวิธีคำสั่งด้านล่าง:
ผ่าน 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 เมื่อไม่ได้อยู่ในเครื่องเสมือนสำหรับ Agnoster, Fish, Honukai, The Paradox และ Sorin
$DefaultUser = ' yourUsernameHere ' Set-Theme : ตั้งค่าธีมจากไดเรกทอรีธีม หากไม่พบการจับคู่จะไม่เปลี่ยนแปลง Autocomplete พร้อมใช้งานเพื่อแสดงรายการและชุดรูปแบบที่มีอยู่
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-CursorUp , Set-Newline หรือเพิ่มตรรกะของคุณเองอย่างสมบูรณ์
ในการทดสอบเอาต์พุตใน conemu เพียงแค่สลับไปที่ธีมของคุณ:
Set-Theme mythemeหากคุณต้องการรวมธีมของคุณไว้ใน Oh-My-Posh ส่ง PR ให้ฉันและฉันจะพยายามให้ข้อเสนอแนะโดยเร็ว
มีความสุขในรูปแบบ!
เนื่องจากดูเหมือนว่าการเข้าถึงข้อมูลสแต็กเมื่อใช้ pushd/popd เป็นภารกิจที่เป็นไปไม่ได้จากภายในธีมคุณสามารถใช้วิธีแก้ปัญหาที่เสนอโดย Jonathan Leech-Pepin ใน $PROFILE ของคุณเพิ่มตัวแปรที่จะทำหน้าที่เป็นตัวชี้ที่กำหนดขอบเขตอย่างถูกต้องเพื่อดึงบริบทสแต็ก:
$getStackContext = { Get-Location - Stack}ถัดไปในธีมที่กำหนดเองของคุณเข้าถึงข้อมูลที่คุณต้องการแสดง:
$stackCount = ( & $getStackContext ).count สิ่งนี้เกิดจากฟังก์ชั่น ConsoleTitle ตามที่อธิบายโดย Andrew Stanton-Nurse มันเชื่อมโยงกับวิธีการทำงานของเทอร์มินัลกับรหัส OSC การแก้ไขคือการปิดใช้งานฟังก์ชัน ConsoleTitle เมื่ออยู่ใน iTerm2 โดยการเพิ่มตัวอย่างต่อไปนี้ใน $PROFILE ของคุณ
if ( $ env: LC_TERMINAL -eq " iTerm2 " ) {
$ThemeSettings .Options.ConsoleTitle = $false
}