
我工作上用 powershell 多半是拿來開個 git 或是用它來當 ssh (較為輕量速度也快) 不然就是開 neovim 來用或是下一些常用指令
之前寫這類的比較散亂沒個正式整理 , 剛好看到保哥的直播教學 就順便整理一下吧
保哥應該是參考老外
應該還有這老外
最後還有這老外
還有這個超級高手日本人
powershell 事前準備
安裝 CHOCOLATEY 官網
1  | Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))  | 
檢查版本
礙於三不五時就有些靈異事件 , 建議先看看自己 powershell 版本 , 5.1 跟 7.x 是有些差異的 , 我設定都是以 5.1 為主
也可以參考保哥的最新設定
1  | $PSversionTable  | 
安裝 gsudo
有在用 linux 的人一定很習慣用 sudo 來切換成 root 權限 , 這個算是 windows 的 root , 美中不足就是會跳個很賭爛的視窗 , 不是直接在 terminal 裡面 , 希望有天可以改善
感興趣可以參考官方
choco 安裝 gsudo
1  | choco install gsudo  | 
或使用 powershell 安裝 gsudo
1  | PowerShell -Command "Set-ExecutionPolicy RemoteSigned -scope Process; iwr -useb https://raw.githubusercontent.com/gerardog/gsudo/master/installgsudo.ps1 | iex"  | 
安裝字體
安裝字體算是大學問 , 在新一點的環境中可以用我常用的 firacode , DejaVu Sans 或保哥推薦安裝的 CascadiaCode
老環境就用保哥去修正的 Microsoft YaHei Mono
firacode
安裝 firacode 字體 (建議要安裝 , 這樣使用 git-posh 才會正常顯示)
1  | choco install firacode  | 
或官網下載 , 解壓縮以後選 ttf 全選以後右鍵安裝
DejaVu Sans
萬一有使用 powerline 這鬼東西 , 可以到這個網頁下載
選擇這個字體 DejaVu Sans Mono for Powerline , 其他字體測不出來 , 圖示都會亂碼 , 安裝好的話用 ssh 連線 ubuntu 也可以正常顯示
CascadiaCode
用這個字體主要是為了用 Terminal-Icons 這個功能 , 礙於老環境限制工作環境我就沒用這個功能
1  | Install-Module -Name Terminal-Icons -Repository PSGallery  | 
Microsoft YaHei Mono
老的環境可以參考不管用什麼字體只要是 run powershell 都會跑掉變回原形很醜 , 找到保哥這篇
只要下載他的字體就可以解決問題 , 但是一些 icon 還是無解至少開 vim 不會跑掉 , 對沒有 windows terminal 的環境幫助滿大的
另外捲軸沒有 30 cm 的話可以用老外的設定 老外直接設定 3000 cm真是狠腳色
設定 windows ssh powershell 連線
我這邊直接使用 windows 的 powershell 來進行連線 , 因為預設的 powershell 畫面很醜 , 像是很古老的當機畫面 , 所以稍微 config 一下
powershell 字體設定
1  | 電腦\HKEY_CURRENT_USER\Console\%SystemRoot%_SysWOW64_WindowsPowerShell_v1.0_powershell.exe  | 
設定好後開啟 powershell => 右鍵 => 內容 => 字型 => Fira Code 即可
安裝 powershell 黑色系佈景 Dracula
這個算是我很喜歡的功能 , 工作上我調整透明度到 90% 也可以看黑色背景眼睛不會痠痛 , 不然我還要自己客製化成豆沙色超麻煩的
下載後解壓 dist\ColorTool 執行 install.cmd 即可完成安裝 , 並且將 dracula-prompt-configuration.ps1 內的設定貼到 $profile
powershell $profile 的設定檔 profile.ps1 跟 .bashrc 類似 , 就是用來初始化 powershell 的設定檔
一般會在以下路徑內新增一個 profile.ps1 文件來進行管理 , 若有 Microsoft.PowerShell_profile.ps1 也可以直接編輯他
1  | #for admin  | 
安裝 oh-my-posh
記得這個 v2 跟 v3 設定上面略有不同 , 所以如果設定佈景樣式遇到 error 可能是用了 v2 的指令 , 網路上一堆人的文章都是 v2 的 , 要特別注意下
oh-my-posh
1  | Install-Module posh-git -Scope CurrentUser  | 
注意!  oh-my-posh 更新頻繁度有點高 , 我在 2022/08/19 從新安裝 windows 10 又改了 , 可以參考這個老外教學影片 不然很有可能陣亡 , 文章可以參考這個大大
我自己是手動下載
1  | Set-ExecutionPolicy Bypass -Scope Process -Force; Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://ohmyposh.dev/install.ps1'))  | 
然後把這串丟進去你的 $profile 然後註解之前的相關命令 , 好像就好了 , 不然用之前的指令會一直跳針 my friend xxooxx 的訊息 , 然後噴一堆 error  , 不過之前的 posh-git & Terminal-Icons 好像還是要裝!? 有點沒印象了
1  | oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH\ys.omp.json" | Invoke-Expression  | 
啟動提示及一些加強功能
DockerCompletion
有在 windows 操作 docker 的人可以考慮安裝這個 DockerCompletion 就可以有 docker 提示 , 敲起來快很多
印象中我還有裝過 k8s 提示 , 不過有點斷手斷腳而且忘了筆記就不寫了 , 而且多半用 k8s 都是在 linux 上面
1  | Install-Module DockerCompletion  | 
歷史提示
啟動歷史預測提示 predictive
注意預設是關閉的需要自行啟用
1  | Install-Module PSReadLine -RequiredVersion 2.1.0  | 
後來看到保哥用這樣安裝可以獲得更好的使用體驗
1  | Install-Module PSReadLine -AllowPrerelease -Force  | 
我在 2022/08/19 用的 2.2.6 版已經沒有 -AllowPrerelease -Force 這個指令
zLocation
類似 acejump 的工具 , 提升爽度 , 用法無腦輸入 z 然後可以選要跳哪 , 詳細參考官方
1  | Install-Module ZLocation  | 
tig
今天研究一下 powershell 上面 tig , 因為安裝了 git 預設就會裝 tig , 之前沒有 windows terminal 斷手斷腳 , 所以會開 git bash 現在就混搭風
可是 tig 的預設佈景整個就是很靈異 , 研究下怎麼調整 , 首先到這裡 下載
然後在你的家目錄底下建立 .tigrc 檔案 ~/.tigrc
編輯這個檔案 C:\Users\YourName\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
1  | notepad $PROFILE  | 
追加這句 , 另外太容易忘記自己的 gitlab repo 網址 , 所以追加一個在 chrome 開啟的指令
1  | function tig { & "C:\Program Files\Git\usr\bin\tig.exe" }  | 
接著 reload $profile
1  | .$profile  | 
或是直接加到 PATH 環境變數 C:\Program Files\Git\usr\bin 
寶可夢
無意中發現PokemonTerminal , 讓整個布景又可以豐富很多 , 順手筆記
列出鬼系 , 鬼斯通用起來像 Ubuntu 的紫色畫面
1  | pokemon -t ghost -d 0.9 -r kanto  | 
清除
1  | pokemon -c  | 
列出寶可夢名稱
1  | pokemon -ne -dr  | 
自訂圖片要丟的路徑 , 注意只能 jpg
1  | C:\tools\Anaconda3\envs\netcdf\Lib\site-packages\pokemonterminal\Images\Extra  | 
列出自訂目錄底下有啥圖片
1  | pokemon -e -dr  | 
其他問題
Security 問題
Nuget 安裝套件炸過的問題 , 用 admin 執行以下命令 , 防止後續炸出 error
1  | [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12  | 
簽章問題
這個炸的 error 我忘了是什麼 , 不過看保哥影片好像也有炸
1  | Set-ExecutionPolicy RemoteSigned  | 
PSReadLine 警告
不曉得從啥時開始會一直出現這串訊息 警告: PowerShell 偵測到您可能正在使用螢幕助讀程式,且已基於相容性而停用 PSReadLine。如果您想要重新啟用它,請執行 'Import-Module PSReadLine'。
可以參考這個解法 記得要重新開機
1  | Set-ItemProperty 'registry::HKEY_CURRENT_USER\Control Panel\Accessibility\Blind Access' On 0  | 
full config
最後額外設定自己的 config , 過程中太頻繁懶得打 docker 直接用 alias , 另外還有像是 history 搜尋可以按 ctrl + r 往前搜尋這種不錯的小技巧可以用 , 詳情參考印度仔
另外可以設定 Emacs 的 key binding 這樣操作起來就跟用 bash 預設的熱鍵一樣 , 這個一定要啟用 , 不然對不起 emacs 大師
看了保哥的設定之後我又多加了一個開啟 _vsvimrc 的功能 , 因為很常需要去找這些散落在各地的 vim 設定檔 , 也可以看你環境去加入如 vscode 的 setting.json 之類的
1  | #注意要用這串安裝才會有增強功能  |