JavaScript is required
Blog About Online 🎬

Windows Terminal · 调教

2024/11/16
13 mins read
See this issue
# 花里胡哨可能有用系列
# 折腾记
Back

安装Windows Terminal(简版)

今天就带大家一起来玩终端,是的,就是如题:Windows Terminal

这个绝对好玩,而且比一般的终端体验确实强很多,配置了美化的效果后,感觉每天都想沉浸在终端的世界里(bushi~,但是今天先不讲太深的美化教程,只走个流程一把梭式的无脑配置就完事了好吧~(如果需要具体的美化教程,可以看这里:个人使用的一个终端美化器配置,基于M365Princess

第一步:先下个Windows Terminal(简称:wt)

官方给了好几种下载安装方式,这里鄙人推荐,如果没有很强烈的其他顾虑或者因素,就按照推荐的方案,走微软商店来安装(占不了多大空间):

完成安装之后,那就把Windows Terminal先放一下,然后…

第二步:下载个JetBrains Mono和终端适用的字体

普通字体里面,小弟就在这里安利一波JetBrains Mono!!!无他!是真的好看好吧~

因为终端侧后续会有图标等展示,需要兼容到这种效果的展示就需要NF的字体,这里就推大家用JetBrainsMono Nerd Font(点我直接下载),要是对这个不满意,也可以看看其他的Nerd Font,任你选择,但得用这页面的一种才行哦~不然后续美化终端的时候,图标的显示是有问题的!!!

第三步:安装JetBrains Mono + Nerd Font

下载,解压,打开文件夹,然后Ctrl + A:为所有用户安装(安装也行,差异就是在其他用户登录这台Windows后就没有这个字体)

JetBrainsMono Nerd Font同理:

OK,字体已经安装完毕~

第四步:修改Windows Terminal配置为自己特调版(配置自己顺手的点和使用习惯)

打开第一步安装好的wt,然后可以看到一个顶部有个向下的箭头图标,点它,弹出一堆选项,其中一个设置,点它!

这里就不针对每一个配置去说了,直接左下角打开JSON配置文件,根据鄙人的习惯,需要调整的有项有以下几个:

{
  "initialRows": 40,	//	启动 > 启动大小 > 行: 40(建议16寸及以上显示器设置40,14寸设置36,以此类推)
  "centerOnLaunch": true,	//	启动 > 启动参数 > 在启动时居中:true => 开启
  "theme": "system",	// 外观 > 应用程序主题:system => 使用Windows主题
  "useAcrylicInTabRow": true,	//	外观 > 在选项卡行中使用亚克力材料:true => 开启

  // 下面配置对应在:profiles > defaults属性节点中:
  "colorScheme": 
  {
      "dark": "Tango Dark",
      "light": "One Half Dark"
  },
  "font": 
  {
      "face": "JetBrains Mono"
  }

  // 下面配置对应在:profiles > list属性节点中的name为Windows PowerShell同级:
  "font": 
  {
      "face": "JetBrainsMono Nerd Font"
  },

  // 下面配置对应在:profiles > list属性节点内追加到list列表的最后一项(添加自定义Shell):
  {
      "altGrAliasing": true,
      "antialiasingMode": "grayscale",
      "closeOnExit": "automatic",
      "commandline": "cmd /c chcp 65001&&plink -ssh 服务器公网ip -l root -pw 连接密码",
      "cursorShape": "bar",
      "font": 
      {
          "face": "JetBrainsMono Nerd Font",
          "size": 12.0
      },
      "guid": "{7530bed3-9deb-45dd-b91a-fbbfd0b1c8da}",
      "hidden": false,
      "historySize": 9001,
      "icon": "ms-appx:///ProfileIcons/{61c54bbd-c2c6-5271-96e7-009a87ff44bf}.png",
      "name": "root@服务器公网ip",
      "padding": "8, 8, 8, 8",
      "snapOnInput": true,
      "startingDirectory": "%USERPROFILE%",
      "useAcrylic": false
  }
}

好了,到这就已经结束了wt的配置,基本符合了鄙人习惯的操作,接下来,再给这个wt加点花,让它不仅好用,还好看。

基于Oh My Posh终端美化篇(简版)

上面前记有说到,可以详细看鄙人另外记录完整版的美化教程,macOS和Windows的都有:

第一步:先下个Oh My Posh

按照官方的意思,第一个给的下载安装的方式是走微软商店

但是鄙人的建议是走独立安装包,因为自行安装的时候是可以选择指定安装路径滴~

Release页可以下载独立安装包https://github.com/JanDeDobbeleer/oh-my-posh/releases

下载完成后同样鄙人这里建议Install for all users(为所有用户进行安装),搞掂!

第二步:开始美化Windows Terminal

按照oh my posh的指示,我们可以配置omp为shell的主题,以达到美化的效果:Change your prompt | Oh My Posh

如果之前你们都没有来捣鼓这个东西,按正常来说,本地都是不存在Microsoft.PowerShell_profile.ps1这个文件的,那就需要先打开前面安装好的Windows Terminal,然后执行这一串:

# 创建配置文件:Microsoft.PowerShell_profile.ps1
New-Item -Path $PROFILE -Type File -Force

得到:

前往这个目录,你就会看到配置文件,打开编辑:

oh-my-posh init pwsh | Invoke-Expression

保存,再去wt输入:

. $PROFILE

噔噔噔~(官方默认主题效果):

贡献小弟定制版美化主题

那我来炫一下小弟的定制化主题,基于M365Princess

oh-my-posh init pwsh --config "https://raw.githubusercontent.com/dosicker/terminal-beautify/main/config/agxm.omp.json" | Invoke-Expression

保存,再去wt输入:

. $PROFILE

噔噔噔~(小弟调教版主题效果):

下面贴上完整的鄙人定制版吧,不过使其生效前得先提前安装几个powershell的模块包,在wt或powershell中管理员模式打开,执行下面几段命令,来提前下载拉好本地的模块,否则会报错(一段段执行):

# 安装:posh-git
Install-Module -Name posh-git -Scope AllUsers
# 安装:npm-completion
Install-Module -Name npm-completion -Scope AllUsers
# 安装:Get-ChildItemColor
Install-Module -Name Get-ChildItemColor -Scope AllUsers

# 最后这一个可能是部分网友会碰到的,就是部分的cmdlet冲突或Set-PSReadLine函数异常/无法正常写入快捷键绑定使用
# 这个原因大概率是由于PSReadLine这个模块包的版本低了,或者本地没有装,需要装一下:
Install-Module PSReadLine -RequiredVersion 2.3.6 -Force
# 若还不行,强制安装最新版
Install-Module PSReadLine -Force

这些就是小弟的定制版前置工作,都装好后,开始食用:

# 执行 oh-my-posh 应用(更新)
function ApplyPoshTheme {
	oh-my-posh init pwsh --config "https://raw.githubusercontent.com/dosicker/terminal-beautify/main/config/agxm.omp.json" | Invoke-Expression
}

function Switch-PoshTheme {
	# 获取存储在注册表中当前系统的应用外观模式:1 => Light;0 => Dark
	$appsTheme=Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize" -Name "AppsUseLightTheme"

	if ($appsTheme -eq 1) {
		$Env:APPEARANCE_MODE='light'
	} else {
		$Env:APPEARANCE_MODE='dark'
	}

    ApplyPoshTheme
}

# 相关模块导入
Import-Module posh-git
Import-Module npm-completion
Import-Module Get-ChildItemColor

# $Env:APPEARANCE_MODE=$mode

# Theme BEGIN oh-my-posh beautify
# oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH\agxm.omp.json" | Invoke-Expression
# 执行
if ($PSVersionTable.Platform -eq 'Unix') {
	ApplyPoshTheme
} else {
	# ps-read-line
	Import-Module PSReadLine
	Switch-PoshTheme
}


# 设置命令历史提示
Set-PSReadLineOption -PredictionSource History
# 配置Tab自动补全
Set-PSReadLineKeyHandler -Key Tab -Function MenuComplete
# 上下方向键,历史补全
Set-PSReadLineKeyHandler -Key UpArrow -Function HistorySearchBackward
Set-PSReadLineKeyHandler -Key DownArrow -Function HistorySearchForward
# 设置 Ctrl+z 为撤销
Set-PSReadLineKeyHandler -Key "Ctrl+z" -Function Undo

# 使用 ls 和 ll 查看目录
function ListDirectory {
    (Get-ChildItem).Name
    Write-Host("")
}
# Set-Alias -Name ls -Value ListDirectory
Set-Alias -Name ll -Value ListDirectory
Set-Alias -Name list -Value Get-ChildItem
# PowerShell 5.1及以下版本无法设置ls的cmdlet,因为它的scope为AllScope选项,会出现(WriteError: (ls:String) [Set-Alias], SessionStateUnauthorizedAccessException)错误
# 而它自身的ls cmdlet命令相等于Get-ChildItem/dir,所以调整ll的cmdlet为(Get-ChildItem).Name形式

# set which cmdlet
function WhichCmdlet {
    $(Get-Command $args[0]).Source
}
Set-Alias -Name which -Value WhichCmdlet

# set touch cmdlet
function touch {
    param (
        [string]$path
    )
    if (!(Test-Path $path)) {
        New-Item -ItemType File -Path $path
    } else {
        (Get-Item $path).LastWriteTime = Get-Date
    }
}
# 设置命令历史列表提示
# Set-PSReadLineOption -PredictionViewStyle ListView
# 每次回溯输入历史,光标定位于输入内容末尾
Set-PSReadLineOption -HistorySearchCursorMovesToEnd

最后,不要忘了使其生效:

. $PROFILE

关于完整版的终端美化的详细食用介绍传送门➡️🚪:GitHub - dosicker/terminal-beautify: 只是一个终端的美化配置啦~

OK,本期折腾记结束,老样子,有啥疑问欢迎评论,来探讨,多沟流~

拜拜~👋