因為一些問題重裝了整個 Windows 上的開發環境,就順便紀錄一下 Windows Terminal(目前在 Windows 最滿意的 Terminal)+ PowerShell 7 + gsudo(更方便的管理者權限) + Chocolatey(用來在命令列安裝東西的)+ oh-my-push(用來美化 Terminal 的) + Poetry(拒絕 Anaconda 後拿來代替虛擬 Python 環境管理的)+ 如何解決顯示虛擬 Python 環境名稱的問題、過一陣子又 「not recognized as a name of a cmdlet…」的問題
因為一些討厭的原因(氣),導致我要重新整個重搞在 Windows 上的開發環境。想說順便記錄一下最基礎的這部份給開發初學者。加上自己對如何在 Oh-My-Posh 有兩大問題害我一直查來查去:過一陣子又 「not recognized as a name of a cmdlet…」、顯示虛擬 Python 環境名稱。所以也順便紀錄一下一些設定檔,也算幫自己留個紀錄。
以下是一個參考步驟順序(僅是參考)。
PS. 以下截圖畫面都是設定完的,所以各位一開始打開跟我長不一樣是正常的。
Step1: Windows Terminal
Windows Termianl 是微軟自己做的 Terminal,終於做點好用的 Terminal(之前我自己很長時間是用 Cmder),可以執行多種的 Shell(如果不知道什麼是 Shell 可能要 Google 一下,最令人有刻板印象就是所謂小黑窗。)
透過 Microsoft Store 安裝 Windows Terminal
可以透過 Microsoft Store(點我直接到連結)直接安裝,或是自己到 Microsoft Store 上搜尋「Windows Termianl」。
找不到 Microsoft Store 的話,可以透過開始列的放大鏡搜尋一下。
基礎美化 Terminal
可以如以下截圖或利用 Ctrl +,
打開「設定」。
然後從「外觀」、「色彩配置」更改成自己喜歡的 Windows Terminal 樣子。也可以順便改下語言,如果你習慣用英文開發環境的話。
Step 2: PowerShell 7
Shell 有很多種,PowerShell 是其中一種跨平台的 Shell。其實在別的平台(例如 Linux)我會用其他的,但是在 Windows 這應該算數一數二好用的了。
其實很多 Windows 電腦應該有預設裝有 Windows PowerShell,但 PowerShell 7 是比較新的版本,可能需要自己安裝。
透過 Github Repo Release 下載安裝
其中一種安裝方法是到 Github Repo 的 Release 下載,你可以看自己需求下載哪個版本,當然這邊推薦下載最新穩定版。
滑到下面,在「Assets」那裡找到 PowerShell-7.3.6-win-x64.msi。
再來大概是無腦安裝流程,就是看你要裝在哪那些,還有依照個自需求設定。
Step 3: gsudo
如果用過 Linux 應該知道 sudo
權限,這個就類似 sudo
功能,能使用指令提升至系統管理員權限。
透過 Powershell 安裝
請在 Powershell 輸入以下指令:
PowerShell -Command "Set-ExecutionPolicy RemoteSigned -scope Process; iwr -useb https://raw.githubusercontent.com/gerardog/gsudo/master/installgsudo.ps1 | iex"
透過 winget 安裝
輸入以下指令:
winget install gsudo
PS. 一般應該都安裝 WinGet 了,如果有問題,可以參考:
Step 4: 在 Windows Terminal 新增管理員權限的 pwsh
- 新增設定檔 → 複製 Powershell 設定檔來改。
- 名字的地方改自己好認的,命令列的地方在原先路徑前面加上「gsudo.exe」
- 如果找不到 gsudo.exe,可以檢查環境變數設定,可能加入
C:\Program Files\gsudo\2.4.0
與C:\Program Files\gsudo\Current
。前提是看各位有沒有改變裝的位置
Step 5: 安裝 Chocolatey
Chocolatey 是一種指令式安裝軟體的服務(可以看這裡的比較),近年越來越多人使用。
安裝方法詳細可以看官方。
或是直接看以下(然後有問題再回去看官方的:D)
- 請注意有用管理者權限執行 Powershell。
- 輸入以下指令:
- 如果沒有什麼錯應該就 OK,或是可以檢查一下環境變數有沒有
C:\ProgramData\chocolatey\bin
(如果沒有改安裝位置的話)
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
Step 6: oh-my-push
如果是在 Linux 上我會用 oh-my-zsh,在 Windows 我就用 oh-my-push。總之就是一種可以讓你美化 Terminal 的工具。
1. 安裝 OMP(有私人建議)
一般來說只要這樣:
winget install JanDeDobbeleer.OhMyPosh -s winget
然後會安裝在 C 槽使用者資料夾下。
但是後來發現如果直接安裝在 $HOME 下不時一直出錯,於是我安裝在自定義路徑。然後把這個路徑底下的 bin 加到環境變數去。
winget install JanDeDobbeleer.OhMyPosh -s winget -l "D:/自定義資料夾"
一般接下來應該要安裝主題,但是我想最後一次寫完設定檔,所以這裡會先帶大家安裝幾個東西,最後再來搞主題。
2. 安裝可以用的字型
如果沒有適合的 Font,大概會有一堆框框,跑不出來主題真正的美(嚴肅)。
sudo oh-my-posh font install
過程中會看到以下截圖,就選擇自己喜歡的字型,字型預覽可以到這裡看:
下載完,記得去設定 → 相應的設定檔 → 外觀 → 字型,選擇你所安裝的字型。
3. 推薦安裝幾個 Plugins(看需求安裝)
- posh-git:讓 Git 的指令可用 Tab 自動完成。
- ZLocation:可以用關鍵字直接跳去想去的的資料夾,比
cd
好用的東西。 - PSReadLine:在 PowerShell 主控台中提供改善的命令列編輯體驗。
- DirColors:在
ls
的時候,會給目錄、檔案上顏色。
PowerShellGet\Install-Module posh-git -Scope CurrentUser -Force
Install-Module ZLocation -Scope CurrentUser
輸入 A
,全部同意。
Install-Module -Name PSReadLine -AllowClobber -Force
Install-Module DirColors
以上插件都需要 import 才能使用,但我會在主題設定完成後,最後再放出我的設定檔,讓大家可以每次打開就主動載入所有設定跟插件。
4. 找到想要的主題(有個人建議)
安裝主題之前可以先到這裡,或是用下面指令預覽主題:
Get-PoshThemes
這裡個人建議,透過官網找到自己想要的主題後,按下連結(這裡以 clean-detailed 為例),把它原始 json
設定檔下載下來,因為我們後面需要更改裡面的內容。下載下來要記得放在哪裡。
5. 改寫 Powershell 設定檔 + 對付 ‘oh-my-push’ not recognized as a name of a cmdlet
我們終於要來寫設定檔了,以下設定檔會讓你在打開 Powershell 的時候,一次載入 oh-my-push 主題,以及相關插件。
首先如果你是第一次要改寫設定檔,先輸入以下指令,開新的設定檔:
New-Item -Path $PROFILE -Type File -Force
通常會在 C:\Users\[你的使用者名稱]\Documents\PowerShell
生成一個檔案叫 Microsoft.PowerShell_profile.ps1
之類的。
可以直接打開這個檔案來編輯,也可以用以下指令用記事本打開:
notepad $Profile
然後在裡面寫上以下設定:
$OutputEncoding = [console]::InputEncoding = [console]::OutputEncoding = New-Object System.Text.UTF8Encoding
oh-my-posh init pwsh --config '[你剛剛存主題的路徑.json]' | Invoke-Expression
Import-Module posh-git
Import-Module ZLocation
Import-Module DirColors
Import-Module PSReadLine
Set-PSReadlineKeyHandler -Key Tab -Function Complete
Set-PSReadLineKeyHandler -Key "Ctrl+d" -Function MenuComplete
Set-PSReadLineKeyHandler -Key "Ctrl+z" -Function Undo
Set-PSReadLineKeyHandler -Key UpArrow -Function HistorySearchBackward
Set-PSReadLineKeyHandler -Key DownArrow -Function HistorySearchForward
儲存再重新打開你的 Terminal 應該就會生效了。
另外說明 $OutputEncoding = [console]::InputEncoding = [console]::OutputEncoding = New-Object System.Text.UTF8Encoding
這行,其實是為了對付「oh-my-push not recognized as a name of a cmdlet」的問題,根據官方 FAQ:
而這行指令是其中一個比較強硬的方法。
6. 解決虛擬 Python 環境下看不到環境名稱的問題
一般直接使用 OMP 的主題,是看不到如以下截圖紅框中的 Python 環境名稱的。
這時我們需要修改前面存下來的主題來多設定這部分。
在 segments
裡面多增加以下:
{
"foreground": "yellow",
"properties": {
"home_enabled": true,
"fetch_version": false,
"fetch_virtual_env": true
},
"style": "plain",
"template": "<{{ if .Root }}lightBlue{{ else }}green{{ end }}>-[</>\ue235 {{ if .Error }}{{ .Error }}{{ else }}{{ if .Venv }}{{ .Venv }}{{ end }}{{ .Full }}{{ end }}<{{ if .Root }}lightBlue{{ else }}green{{ end }}>]</>",
"type": "python"
},
網路上有些資源沒有寫 "home_enabled": true
其實也可以成功顯示的,只是在 $HOME 底下沒辦法而已。
另外如果你是使用有些工程師很討厭的 Anaconda 的話,需要先 conda init
然後重啟 Terminal 才會有用。
Step 7: 安裝 Poetry
這部份已經有一份很好的參考的 Blog 了,我就不獻醜了。
比較常出錯是要記得設定環境變數!
後記
開發環境永遠讓人頭疼 ==,尤其是 Windows 之下的環境。希望這份記錄有幫助到大家。
如果以上內容有錯,歡迎在下方留言反饋給我,也歡迎大家留下自己嘗試後的體驗心得~