夏卡樵の開發日誌

在離線環境配置潮潮的windows終端機

開發環境
Shaka Joe
Shaka Joe
發布於 2022-05-18 06:00
post-thumbnail

終端機耍潮不是mac的專屬,windows也可以囉
以下是我們需要的軟體:

  • PowerShell (windows內建)
  • Windows Terminal
  • posh-git
  • oh-my-posh (寫這篇文章時已是V3的版本)

本篇是針對不能連外網的環境來介紹,若是一般網路暢通的環境跟著官方作法就能順利安裝

安裝Windows Terminal

OS需求 Windows 10 版本 18362.0 或更高(依Termial版本可能不同)

官方github下載bundle安裝包。
離線環境無法正常安裝msixbundle,自行把該檔案附檔名改成.zip並解壓縮,解壓後裡面有檔案CascadiaPackage_1.6.10571.0_x64.zip,再次將其副檔名改成.zip解壓縮。
可以將解壓縮後的資料夾改名為terminal,並放到任何地方,之後點擊裡面的WindowsTerminal.exe就能開啟終端機。

安裝PowerShell的套件們

PowerShell的packages可以在PowerShell Gallery搜尋,裡面有各種好用的套件

由於我們是離線環境,無法直接用以下指令安裝

Install-Module posh-git -Scope CurrentUser
Install-Module oh-my-posh -Scope CurrentUser

因此我們需要手動從PowerShell Gallery下載package。

選擇Manual Download -> Download the raw nupkg file 如下圖:

圖片

下載來的檔案是nupkg檔案,按照官方文檔進行離線安裝,步驟如下:

  1. 解鎖NuGet包文件,打開PowerShell,執行如下命令(路徑自行替換) Unblock-File -Path C:\\Downloads\\[module].nupkg
  2. 把nupkg文件副檔名改成zip並解壓縮
  3. 刪除裡面與NuGet規範相關的文件,包括:
    • 一個_rels資料夾
    • 一個package資料夾
    • 一個[Content_Types].xml檔案
    • 一個類似<name>.nuspec的檔案,name為package name
  4. rename資料夾 資料夾解壓縮後預設為<name>.<version>格式,我們將目錄結 構改為<name>/<version>,並將所有文件移動到版號資料夾裡 面。
  5. 查詢模塊放置的路徑 打開PowerShell執行命令$env:PSModulePath查看模塊所在目錄。 一般來說有C:\\Users\\XXX\\Documents\\PowerShell\\Modules,沒有的話可以自行創建。
  6. 把剛剛處理好的資料夾放到上面的Module Path 目錄結構會像這樣: PowerShell\\Modules\\oh-my-posh\\2.0.492

配置PowerShell

  1. 如果還沒有config file的話,則生成:
    if (!(Test-Path -Path $PROFILE )) { New-Item -Type File -Path $PROFILE -Force } 檔案應該會存在於: C://Users/[user]/Documents/WindowsPowerShell/Microsoft.PowerShell_profile.ps1
  2. 編輯該配置檔案,若有安裝VS Code並把code加入環境變數則可使用指令直接開啟: code $PROFILE
  3. 加入以下配置,每次啟動時自動載入模塊(路徑/版本自行替換)
    Import-Module "C:\Users\XXX\Documents\PowerShell\Modules\posh-git\1.0.0-beta4\posh-git.psm1"
    Import-Module "C:\Users\XXX\Documents\PowerShell\Modules\oh-my-posh\2.0.492\oh-my-posh.psm1"
    

配置完成後重新開啟PowerShell(直接開或者用Windows Terminal開都可以),可能會遇到報錯:

圖片

這是由於PowerShell有4種執行原則:

  • Restricted:所有PowerShell Script(.ps1) 皆無法執行。(Windows系統預設)
  • AllSigned:所有PowerShell Script都要經過受信任的發行者簽屬過後才可執行。
  • RemoteSigned:針對從異地下載下來的PowerShell Script需要經過受信任的發行者簽屬過後才可執行,本機的PowerShell Script可直接執行。
  • Unrestricted:無限制,所有PowerShell Script皆可執行。

因為Window系統預設為Restricted,所以只需用指令改變設定就OK了。(RemoteSigned還是不能的話就只好用Unrestricted了)

Set-Executionpolicy RemoteSigned
# 若沒有系統管理員權限
Set-Executionpolicy RemoteSigned -Scope CurrentUser

我們可以再進一步加入配置,讓PowerShell變得更好用:

  • 改變主題(可透過指令Get-PoshThemes查看所有主題的demo,或是到官網看)
    Set-PoshPrompt -Theme aliens
    
  • 加入alias
    function Get-GitLogs { & git log --oneline --graph --decorate --all -20 }
    New-Alias -Name glg -Value Get-GitLogs -Force -Option AllScope
    
  • 把PowerShell的ls改成linux-like的用法(需安裝git,以下git路徑可能跟我不同)
    function ls_git { & 'C:\\Program Files\\Git\\usr\\bin\\ls' --color=auto -hF $args }
    Set-Alias -Name ls -Value ls_git -Option AllScope
    

配置Windows Terminal

預設配置文件應該在C://Users/[user]/AppData/Local/Microsoft/Windows Terminal/settings.json
也可透過Windows Terminal介面上的設定按鈕進入

用Windows Terminal開啟設置完成的PowerShell後,可能會遇到很多符號無法顯示出現亂碼,我們需要自行安裝字體來解決這個問題(自行搜尋字體,雙擊安裝即可)。 這邊注意必須使用Nerd Fonts,oh-my-posh建議使用的字體是Meslo,若想使用Fira Code之類的也可以。

開啟上面的powershell config file

{
    "profiles":
    {
        "defaults": 
        {
            // settings here
            "fontFace": "Cascadia Code PL"
        }
    }
}

儲存後重開Windows Terminal,畫面就能正常顯示了。

圖片

參考資料

回覆 (0)

夏卡樵の開發日誌

Copyright © 2021-2025. All Rights Reserved.

Social Media