接着之前的文章 黑科技搶先嘗(續) - [Windows terminal中WSL Linux 終端的極簡美化指南](https://www.cnblogs.com/enjoy233/p/simple_guide_to_WSL_terminals_in_Windows_Terminal.html),依然假定你安裝好了windows terminal預編譯版本。
這次我的目標是將PowerShell美化成下面這樣,並在命令提示符中加入Emoji
表情。
安裝python
由於本文主要是針對Windows terminal上的Powershell Tab
來寫,自然是需要使用 windows 10 1903版本的。那此時安裝Python
的方法即在Window store
中搜索Python
,購買、安裝即可,默認安裝上的應該是Python 3.7。
當然,你也可以去python
官網上下載安裝包后進行安裝~
而在后續使用pip
命令的過程中,經常會出現如下提示:
You are using pip version 19.0.3, however version 19.1.1 is available.
升級 pip
這說明我們該升級pip
的版本了,完美解決的解決方法為 - 輸入如下命令:
pip install --user --upgrade pip
安裝git
安裝好git,並保證git
的系統變量沒問題,cmd或PowerShell中輸入git
正常運行。
安裝powerline字體
powershell對字體要求比較嚴格,因此並不是所有的等寬字體都可以直接在里面使用。
我們先來安裝powerline
字體吧,powerline/fonts 項目的官方安裝步驟如下:
PS C:\WINDOWS\system32> git clone <https://github.com/powerline/fonts>
PS C:\WINDOWS\system32> cd C:\Users\Bruce\fonts\
PS C:\Users\Bruce\fonts> ./install.ps1
執行這里最后一句 時,會出現權限的問題:
其解決方法是使用管理員權限另開一個 PowerShell
窗口, 輸入:
PS C:\Users\Bruce\fonts> set-executionpolicy Bypass
這個命令可以運行未簽名的腳本或者為你的腳本簽名。
執行之,會彈出:
這里需要輸入a
, 然后再次執行:
./install.ps1
但我並不建議這樣安裝,因為這樣是將所有的powerfont字體都安裝上,需要耗費大量的時間。事實上,我們只需安裝符合powerline
規范的字體 Sarasa Mono T SC
(中文叫 等距更紗黑體) 或 Fira code
即可。
從相應的github項目官網上下載前面這個昨天,特別的慢,我已經上傳到:
方便你 git clone
后使用,拉取完成后,解壓后,復制文件到C:/Windows/System/fonts
文件夾,即安裝完成。
當然,你也可以安裝后面的Fira code
字體. 而對於默認獨立的powershell窗口,只能使用前面的Sarasa Mono T SC
字體,該昨天在Windows 10之外的Windows系統中也能在界面上選擇后使用。
windows下安裝Fira code
字體的方法為:
- 下載 FiraCode https://github.com/tonsky/FiraCode/releases
- 復制相應的ttf 文件到
system/fonts
文件夾
或
- 安裝chocolatey
以管理員權限打開powershell,輸入
Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
- 然后使用chocolatey命令:
choco install firacode
然后在命令行應用之,具體操作是在profiles.json
中把字體設置成它,即可生效。
參考文檔:
tonsky/FiraCode Wiki
https://github.com/tonsky/FiraCode/wiki
主題定制
此外,如果想更深入地定制powershell
主題,推薦安裝oh_my_posh
,對標 Linux
下的 oh-my-zsh
,下面詳細介紹。
安裝oh-my-posh
oh-my-posh
是一個強大的powerline
主題,類似於 Linux
下的 oh-my-zsh
.
相應的github
官方項目中其實有具體的操作步驟,見:
JanDeDobbeleer/oh-my-posh: A prompt theming engine for Powershell running in ConEmu
https://github.com/JanDeDobbeleer/oh-my-posh
查看策略組的執行權限
首先,我們需要查看當前的權限,以便后續正常安裝,這也是許多文章忽略的問題。參看微軟官方文檔中的策略管理方式,只需在以管理員權限打開的powershell
中這么執行指令:
Get-ExecutionPolicy -List
此時,我們需要輸入以下命令,將CurrentUser的ExecutionPolicy(執行權限)從原來的Undefined更改成RemoteSigned,需要輸入命令:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
按提示輸入y
即可。
使用choco
安裝終端模擬器 - ConEmu
推薦你使用ConEmu
在Windows上獲得出色的終端體驗。
PS C:\Users\Bruce> choco install ConEmu
接下來,你需要使用PowerShell Gallery
來安裝 oh-my-posh
.
PS C:\Users\Bruce> Install-Module posh-git -Scope CurrentUser
PS C:\Users\Bruce> Install-Module oh-my-posh -Scope CurrentUser
都安裝好之后,還需要更新配置文件$PROFILE
,類似於Linux Bash的.bashrc, 這是全局修改,而不是臨時的設置喔~
輸入:
PS C:\Users\Bruce> $PROFILE
結果為:
C:\Users\Bruce\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
繼續輸入:
PS C:\Users\Bruce> if (!(Test-Path -Path $PROFILE )) { New-Item -Type File -Path $PROFILE -Force }
PS C:\Users\Bruce> notepad $PROFILE
在打開的文件中添加內容:
Import-Module posh-gitImport-Module oh-my-poshSet-Theme Paradox
保存后關閉記事本。
最后更新配置:
PS C:\Users\Bruce> C:\Users\Bruce\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
重啟powershell后會發現已經生效。
優化 PowerShell 的配色
接下來,我們可以使用微軟提供的一個方便更改默認終端配色的工具 colortool
來優化powershell中的顏色,下載地址:
https://github.com/microsoft/terminal/releases/download/1904.29002/ColorTool.zip
這個工具也支持讀取 iTerm 主題文件。
- 首先,使用上面的地址將 ColorTool 下載至本地,並解壓
- 打開
Windows terminal
的Powershell Tab
ColorTool 使用非常簡單,該工具自帶了幾種配色主題,我們可以利用下面這個命令進行查看:
# 注:-s 代表 schemescolortool -s
.\ColorTool.exe -s
其中前面列出的幾個 .ini
和 .itermcolors
就是主題配置文件,我們可以直接通過下面這個命令設置主題:
# 臨時查看
colortool <主題名稱>
# 定義默認值
colortool -d <主題名稱>
比如我們希望將主題配色更換為 OneHalfDark.itermcolors
,只需要輸入下面這個命令就可以更換並預覽更新:
.\ColorTool.exe OneHalfDark
我隨便使用了幾個命令,結果如下:
要特別提醒一點:
在Windows terminal
下使用Powershell Tab, 調用ColorTool
需要使用.\ColorTool.exe
, 如果直接用ColorTool.exe
會報錯(如下圖所示):
而在Windows terminal
以外的獨立cmd.exe
或 Powershell
窗口,.\ColorTool.exe
和ColorTool.exe
都能正常運行。
將powershell
的提示符改為 Emoji
終端中插入Emoji
的功能,Mac和Linux幾年前都能支持。相比windows
也應該可以支持,請執行以下步驟:
啟動Powershell
或Windows Terminal 的 Powershell Tab
-
執行
notepad $profile
或code $profile
(推薦使用后者vs code,記得安裝時勾選上Add to PATH (available after restart)
) -
復制/粘貼此行:function prompt { "PS $pwd>" }
-
在你想要的位置插入表情符號, 比如 把
function prompt {"PS $pwd ? >" }
中的?
替換為所需要的表情,這里我替換成了: 🔥👽. -
比如,我使用了vs code編輯,操作如下:
-
文件 - >另存為 - >使用默認文件名,但你必須將編碼設置為
UTF-16 LE
,因為這是Powershell
對其配置文件所期望的(UTF-8編碼不起作用) -
保存后關閉編輯器
-
關閉Powershell / Terminal Windows
-
再次打開
Powershell
或Windows Terminal
的Powershell Tab
此時界面為:
現在,好好享受你的Emoji
符號提示符吧~
這個功能的給出,得感謝開發Windows terminal
的微軟員工,很感激他們的快速響應。
這是我之前提的一個issue
,地址為:
Could new Windows Terminal customize prompt using emoji? · Issue #814 · microsoft/terminal
https://github.com/microsoft/terminal/issues/814#issuecomment-492907982
不從Window terminal中使用 Powershell
對於默認獨立的powershell窗口,只能使用后面這種字體,windows 10之外的windows系統也能在界面上選擇后使用(附圖)。
在命令行提示符還沒加入Emoji
表情之前,powershell
界面為:
相關閱讀:
關於windows中的utf-8字符和utf-16字符 - 雲風
https://blog.codingnow.com/2019/05/windows_utf16.html
告別 Windows 終端的難看難用,從改造 PowerShell 的外觀開始 - 少數派
https://sspai.com/post/52868
How to make a pretty prompt in Windows Terminal with Powerline, Nerd Fonts, Cascadia Code, WSL, and oh-my-posh - Scott Hanselman
https://www.hanselman.com/blog/HowToMakeAPrettyPromptInWindowsTerminalWithPowerlineNerdFontsCascadiaCodeWSLAndOhmyposh.aspx
原創不易,你的支持和認可將讓我寫出更好的文章,更多干貨可關注 公號「大白技術控」,持續輸出優質的技術文章~
作者簡介:Bravo Yeung,計算機碩士,知乎干貨答主(獲81K 贊同, 38K 感謝, 235K 收藏)。曾在國內 Top3互聯網視頻直播公司工作過,后加入一家外企做軟件開發至今。
歡迎在留言區留下你的觀點,一起討論提高。如果今天的文章讓你有新的啟發,學習能力的提升上有新的認識,歡迎轉發分享給更多人。
歡迎各位讀者加入 .NET技術交流群,在公眾號后台回復“加群”或者“學習”即可。
文末彩蛋
微信后台回復“asp”,給你:一份全網最強的ASP.NET學習路線圖。
回復“cs”,給你:一整套 C# 和 WPF 學習資源!
回復“core”,給你:2019年dotConf大會上發布的.NET core 3.0學習視頻!