使用windows Terminal和oh-my-posh优化你的windows终端(年轻人就是要花里胡哨)

4,192 阅读4分钟

「这是我参与11月更文挑战的第9天,活动详情查看:2021最后一次更文挑战

windows Terminal

Windows Terminal 是微软公司2019年发布的新命令行程序,是一个套在 Windows 操作系统原本的 CMD、Powershell、Windows Subsystem for Linux(WSL)之上的一个界面更加漂亮、功能更加强大的终端工具

windows Terminal优势

  • 现代化可DIY的界面,抛弃一成不变的终端样式
  • 完整的字体字符渲染机制(包括 Emoji、中文)
  • 和 Windows 统一的 Fluent 设计风格
  • GPU 加速
  • 同时支持 PowerShell、CMD 以及 Windows Linux 子系统(WSL)
  • 默认 Tab 标签模式,无需新建多个终端

当然俺用这个只是因为想要一个好看一点的终端

安装方法

  1. 用户可以自行在Microsoft应用商店搜索windows Terminal安装,不过不得不吐槽,国内有时候登啥微软账号或者是在这个应用商店下东西,登录和下载是真的很看运气,反正我是等了很久没在这下下来

image.png

  1. 在github下载适合版本安装,链接在此

image.png

PowerShell Core

Microsoft发布了 PowerShell Core ,这是 PowerShell 的新版本。 PowerShell的新版本可用于所有主要计算平台,包括Windows,Linux和MacOS。我们win10电脑一般自带的是PowerShell5

首先和最重要的区别是PowerShell Core是跨平台的并且可以在Windows,Linux和MacOS上运行,而旧版本只能在Windows上运行。PowerShell Core将提供新的功能更新和修复,而较旧的PowerShell将仅提供错误修复和安全更新

安装方法

下载链接选择msi文件安装

image.png

oh-my-posh

oh-my-posh有点类似于ubuntu的oh-my-zsh,里面有很多主题

安装一些模块的oh-my-posh

# PSReadline
Install-Module -Name PSReadLine -AllowPrerelease -Force

# posh-git
Install-Module posh-git -Scope CurrentUser

# oh-my-posh官方文档支持的手动下载
Set-ExecutionPolicy Bypass -Scope Process -Force; Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://ohmyposh.dev/install.ps1'))

前两个安装命令应该没什么问题,oh-my-posh很有可能这样下载不成功

命令行下载oh-my-posh不成功的解决办法

  • 首先下载安装的命令添加 -Verbose 来显示安装过程的log,,也就是: Install-Module oh-my-posh -Force -Verbose

  • 然后观察下面的输出,,找到要安装的 oh-my-posh 的实际网址,例如我现在安装的就是6.2.0版本的:https://www.powershellgallery.com/api/v2/package/oh-my-posh/6.2.0 ,(这个链接可能会变化,因为链接一般是指向最新版本)

  • 把链接放进浏览器enter,浏览器回直接下载,下载的文件是 .nupkg 格式的,,修改后缀为 .zip 解压

  • 然后将解压后的文件夹放到 powershell 的 modules 文件夹下,,比如说,我这里要为powershell Core安装oh-my-posh,powershell的实际安装路径是这个: C:\Program Files\PowerShell\7 ,解压的文件夹放置的路径就为: C:\ProgramFiles\PowerShell\7\Modules\oh-my-posh\6.2.0,这样oh-my-posh就安装成功了

image.png

oh-my-posh设置主题

旧版主题设置
// 旧版,请看下方新版进行设置
Import-Module PSReadLine
Import-Module posh-git 
Import-Module oh-my-posh (失效)
Set-PoshPrompt -Theme M365Princess (失效)

// 新版(采用)
Import-Module PSReadLine 
Import-Module posh-git 
oh-my-posh init pwsh --config $env:POSH_THEMES_PATH\M365Princess.omp.json | Invoke-Expression

image.png 如果你只是在当前终端输入这些命令,而没有记录在配置文件中,那么下次打开终端使用这些东西,还需要再一次输入相应命令。另外Set-PoshPrompt -Theme M365Princess是旧版本oh-my-posh设置主题的命令(M365Princess是主题名),新版本需要采用 oh-my-posh init pwsh --config $env:POSH_THEMES_PATH\M365Princess.omp.json | Invoke-Expression 需要设置环境变量 POSH_THEMES_PATH 。使用Get-PoshThemes命令能查看目前版本所有的主题显示。

新增或打开PowerShell Core配置文件

用记事本打开配置文件 notepad $PROFILE

在其中添加下面的内容

// 旧版,请看下方新版进行设置
Import-Module PSReadLine
Import-Module posh-git 
Import-Module oh-my-posh (失效)
Set-PoshPrompt -Theme M365Princess (失效)

// 新版(采用)
Import-Module PSReadLine 
Import-Module posh-git 
oh-my-posh init pwsh --config $env:POSH_THEMES_PATH\M365Princess.omp.json | Invoke-Expression

image.png

字体的设置

需要注意的是,oh-my-posh 主题使用了一些非 Powerline 字体不支持的字符,因此如果你使用默认的等宽字体(比如 Consolas),在显示过程中就会出现乱码、字符显示不全的现象

image.png 我们需要下载适合的字体,并设置,链接在此,Cousine Nerd Font和DejaVuSansMono Nerd Font都显示正常,我使用的是Cousine Nerd Font,打开windows Terminal,将powershell Core设置为默认终端(注意之前的oh-my-posh一系列安装配置都是在powershell Core上面),打开json文件,如图配置字体,然后主题就不会乱码了

image.png

image.png

image.png

VScode相关设置

当你设置好上面的操作后,你的VScode也会有相应的变化,但如果不设置字体,也会出现主题显示也会有问题,在设置里将终端的字体样式也改成Cousine Nerd Font(注意是修改VScode终端的,不是VScode整体的字体),这样主题也能在VScode终端上完美显示

image.png

image.png