吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5046|回复: 8
收起左侧

[其他转载] PowerShell美化oh-my-posh主题及特殊字符替

[复制链接]
SnowRen 发表于 2022-1-12 16:13
本帖最后由 SnowRen 于 2022-1-12 17:53 编辑

PowerShell美化oh-my-posh主题及特殊字符替换

起始篇:

日常在使用VSC时,终端使用是的Windows系统自带PowerShell,每次打开时都会提示

尝试新的跨平台 PowerShell https://aka.ms/pscore6

行吧,那就试试,于是安装了 PowerShell 7.2.1 win-64

与系统自带的  Windows PoweShell 是共存的

命令行继承了一贯的传统,既然每天都都对着一成不变的界面,那就美化一下

美化篇:oh-my-posh

安装过程:

以管理员身份打开PowerShell,依次执行下面三条命令,若遇到Yes,NO询问的地方都Y

Set-ExecutionPolicy Bypass

Install-Module oh-my-posh -Scope CurrentUser

Install-Module posh-git -Scope CurrentUser
配置过程:

新安装的PowerShell是没有配置文件的,创建命令(当然不用命令,也可直接新建一个文件“Microsoft.PowerShell_profile.ps1”)

if (!(Test-Path -Path $PROFILE )) { New-Item -Type File -Path $PROFILE -Force }

执行命令后创建的配置文件的存放位置

Windows PowerShell 的存放位置:

文档\PowerShell\Microsoft.PowerShell_profile.ps1

PowerShell 7.2.1 的存放位置:

文档\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

使用记事本编辑

notepad $PROFILE

将下面脚本复制到里,保存

Import-Module posh-git
Import-Module oh-my-posh
Set-PoshPrompt -Theme agnoster

一二条脚本导入模块,与Python有点相似,第三条为设置主题,其中agnoster为主题名,可自行修改为自己喜欢的主题

再次使用管理员身份打开PowerShell,开始导入模块,下载主题,需要等几分钟,完毕后,就可以看到不一样的命令提示符

查看已有的主题,使用命令

 get-poshthemes

图像01.png

自定义主题修改篇:

参考官方文档

Introduction | Oh My Posh

找到Oh-my-posh主题存放的位置

Windows PowerShell 的存放位置:

文档\WindowsPowerShell\Modules\oh-my-posh\themes

PowerShell 7.2.1 的存放位置:

文档\PowerShell\Modules\oh-my-posh\themes

自己新建一个或复制一个进行修改,注意文件名结构,参考:agnoster.omp.json

图像02.png

个人认为比较有特点的是:Java、Python、Git目录的识别标志,命令执行时间 executiontime

{
        "type": "git", 
    "style": "powerline",
    "powerline_symbol": "\uE0B0",
    "background": "#25AFF3",
    "foreground": "#ffffff",
    "properties": {
        "fetch_status": true,
        "template": "{{ .HEAD }}{{ if .Staging.Changed }} \uF046 {{ .Staging.String }}{{ end }}{{ if and (.Working.Changed) (.Staging.Changed) }} |{{ end }}{{ if .Working.Changed }} \uF044 {{ .Working.String }}{{ end }}",
            "postfix": ") ",
          "prefix": " branch ("
      }         
},
{
    "type": "python",
    "style": "powerline",
    "powerline_symbol": "\uE0B0",
    "foreground": "#ffffff",
    "background": "#FF6471",
    "properties": {
        "prefix": " \uE235 ", 
                "display_mode": " files "
        }
}, 
{
        "type": "java",
        "style": "powerline",
    "powerline_symbol": "\uE0B0",
        "foreground": "#ffffff",
        "background": "#4063D8",
        "properties": {
                "prefix": " \uE738 ", 
                "display_mode": " files "
        }
}, 
{
        "type": "executiontime", 
        "style": "powerline",
        "powerline_symbol": "\uE0B0",
        "background": "lightYellow",
        "foreground": "#3f3f3f",
        "properties": {
                "threshold": 0,
                "style": "roundrock", 
                "prefix": "  \ufbab"
        }         
}, 

比较特殊的是 exit ,需要配合使用,当命令错误时触发

图像03.png

{
        "type": "exit",
        "style": "plain",
        "foreground": "#e0f8ff",
        "properties": {
                "prefix": "\ue285ff",
                "display_exit_code": false,
                "always_enabled": true,
                "error_color": "#ef5350"
        }
},

乱字符处理篇:

刚配置好的Oh-my-posh主题,绝大多数主题都会出现乱码,这是因为主题里用了很多特殊的字符(符号),官方文档已经说的很明确了,主题是居于Nerd Fonts 字体设计的。

Nerd Fonts - Iconic font aggregator, glyphs/icons collection, & fonts patcher

安装官方建议的字体后,乱码问题就解了

VSC仍然乱码,则需要设置一下VSC里终端的字体

图像04.png

最终效果

图像05.png

字体Patch篇

试了Nerd Fonts 的全部字体,中文显示都不太理想

Nerd Fonts 官方还有另一种解决方案,一个可以Patch字体的脚本,自定义属于自己的字体

https://raw.githubusercontent.com/ryanoasis/nerd-fonts/master/font-patcher

font-patcher脚本折腾了三天都没搞定,可以直接跳过本篇,功力足够的网友可以偿试一下

下面仅是本人折腾的过程:

下载字体库:

git clone --depth 1 https://github.com/ryanoasis/nerd-fonts.git

未下载成功,后换成gitee

git clone https://gitee.com/keyboardkiller/nerd-fonts.git

下载到 1.02GB 的项目文件

font-patcher 脚本参数说明

font-patcher 字体文件 -s -c -out 输出文件夹
-s 设置图标宽度为single, 默认为double, 在某些场景下可能会造成图标重叠
-c 设置添加全部图标集
-out 设置输出文件夹, 默认为当前文件夹

在Windows下运行出错,安装Python模块

pip install python-fontforge                #出错
pip install python3-fontforge                #成功

报错

FontForge module is probably not installed. [See: http://designwithfontforge.com/en-US/Installing_Fontforge.html]

安装windows版FontForge后,仍然出错

官方文档相对详细的是Unix系统下的操作,那就安装了Ubuntu

接着继续操作

sudo apt-get install python-fontforge                #出错
sudo apt-get install python3-fontforge                #成功
sudo apt-get install python-configparser
chmod +x font-patcher                                                         #提示没有执行权,此命令给文件添加权限

报错,/usr/bin/env: "python\r":没有那个文件或目录

查阅资料后发现:从github中clone下来的文件,可能创建在windows下,多了\r字符。

解决方法如下:

使用VI编辑器打开文本,然后进行如下操作:

:set ff        #然后回车,我这个文件显示为dos格式。
:set ff=unix   #回车,设置为unix格式。
:wq

一顿操作后,仍然报错,查看了环境,Ubuntu 默认装了三个版本的 Python

字体工具 TypeTool3 增加字符篇

Patch字体不成功,从网上找到这个软件最终实现了增加字符的功能,操作极其简单

准备

先从Nerd Fonts 官方下载一套字体,作为特殊字符提取源,建议下载 Meslo Nerd Font  

Nerd Fonts - Iconic font aggregator, glyphs/icons collection, & fonts patcher

本人日常使用的是更纱黑体,(至于大家想替换的目标字体,自行准备,前提是PowerShell能识别得出来)

下载地址:

GitHub - Moyf/Sarasa-Gothic: Sarasa Gothic / 更纱黑体 / 更紗黑體 / 更紗ゴシック / 사라사 고딕

用TypeTool3同时打开两个字体

一个是含特殊字符的 Meslo Nerd Font 字体文件 Meslo LG S Regular Nerd Font Complete Windows Compatible.ttf

另一个是不含的特殊字符的更纱黑体文件 sarasa-term-sc-regularNerd.ttf

选中一个,或者多个特殊字符,再到另个字体中右键,附加字体(这里不会覆盖已有的字符,有则跳过)

图像06.png

操作完成之后,生成字体,安装字体,设置字体,效果如下:

图像07.png

更纱字体有些偏小,需要将字号设置大些,如果出现个别地方乱码,需要从TypeTool3里打开的字符查找原因,看相对应的字符编码

这里的字符编码很方便,在自定义主题时,就可以从对应的字符上一眼看到字符编码

结束语:

​        至此本文就结束了,使用主题脚本会有一个加载时间,如果想要快速的打开PowerShell那就别用

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
脱下小可爱 + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

senwar 发表于 2022-1-19 10:48
感谢分享~~~
maodaye 发表于 2022-5-2 20:14
 楼主| SnowRen 发表于 2022-5-4 10:42
maodaye 发表于 2022-5-2 20:14
请问这种情况怎么解决?

明显是低版本的字体或不兼容的字体,换字体即可,到nerdfonts官网下载:https://www.nerdfonts.com/font-downloads
maodaye 发表于 2022-5-4 14:33
SnowRen 发表于 2022-5-4 10:42
明显是低版本的字体或不兼容的字体,换字体即可,到nerdfonts官网下载:https://www.nerdfonts.com/font- ...

好的,非常感谢
aichiyu 发表于 2022-9-20 18:31
这教程很坑人
skypaladin 发表于 2022-9-20 20:43
大佬们PS都玩出花了,求中文PDF教程。
爱咪哆 发表于 2022-10-5 03:46

此教程已过时
yippee 发表于 2023-4-3 10:34
ms官方有 教程:使用 Oh My Posh 为 PowerShell 或 WSL 设置自定义提示符
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 23:56

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表