win10 配置 oh-my-posh

news2024/12/23 12:11:28

win10 配置 oh-my-posh

  • 0. 前置
  • 1. 安装
    • 1.1. 软件
    • 1.2. 字体
    • 1.3. 激活
      • 1.3.1. Git Bash
      • 1.3.2. PowerShell
  • 2. 配置
    • 2.1. 效果
    • 2.2. 说明
    • 2.3. 其他
      • 2.3.1. 新版`PowerShell`
      • 2.3.2 `conda`问题

0. 前置

这个东西毕竟是个,命令行美化工具,所以需要先有一个命令行,我这里用的是 Windows Terminal1。总之具体的细节不再赘述,安装这个的教程可以参考上文的链接,或者自行查找教程。我们在这里假设你已经有了一个配置好的终端,并且熟悉其修改基本设置。

1. 安装

1.1. 软件

网上有的教程,有在命令行用winget的,有在Microsoft Store安装的,但是可能由于网络问题,试了几次都没成功,最终还是直接去 github2下载的安装包,选了个64位的版本。

这个比较烦的是需要手动更新,毕竟是手动安装的软件。如果有更新,会在更新发布后,第一次打开终端的时候,在命令行上面弹出几行更新提示。毕竟开命令行的时候才启动了oh-my-posh,自然它也就在此时检查更新。之前还想找一下有无禁止更新的设置,没找到。

需要注意,手动更新的话,每次更新似乎会覆盖安装位置的所有文件,所以不要在安装文件夹放什么配置文件。

1.2. 字体

美化嘛,总要整点新花样,花里胡哨的字符,自然就需要一个新的字体来支持视觉效果。这里没啥说的,按照官方文档的装就行了,就是这个Meslo LGM NF。这里就不放字体链接了,去官方文档3找吧,万一他们更新了字体或者什么的。总之,下载链接大概在这个位置,摘录一段原文:

Oh My Posh was designed to use Nerd Fonts. Nerd Fonts are popular fonts that are patched to include icons. We recommend Meslo LGM NF, but any Nerd Font should be compatible with the standard themes.
 
To see the icons displayed in Oh My Posh, install a Nerd Font, and configure your terminal to use it.

1.3. 激活

1.3.1. Git Bash

大概是在配置文件里面加一行代码,配置文件的地址是:

C:\Users\UserName\.bash_profile

然后加一行激活oh-my-posh主题的代码

eval "$(oh-my-posh --init --shell bash --config D:\\Software\\Config\\oh-my-posh-themes\\jandedobbeleer.omp.json)"

反正大概意思就是,在启动Git Bash的时候,运行这行代码。然后这行代码的意思呢,是启动oh-my-posh并初始化,使用指定路径的json文件来配置主题。

1.3.2. PowerShell

首先需要说一下,这个是旧版的,详细信息如下:

PS C:\WINDOWS\system32> $psversiontable

Name                           Value
----                           -----
PSVersion                      5.1.19041.4170
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.19041.4170
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

配置文件大概是在4

C:\Users\UserName\Documents\WindowsPowerShell\profile.ps1

然后启动命令是:

oh-my-posh init pwsh --config 'D:\Software\oh-my-posh-themes\jandedobbeleer.omp.json' | Invoke-Expression

改主题的话,只要改路径使用新的json或者是直接改这个json内容都行

据使用体验来看,旧版PowerShell在我的电脑上本来加载就慢,配上oh-my-posh之后更是爆炸。

反正平常也就是命令行跑跑代码,我还是常用Git Bash。至于PowerShell,我去掉了所有的加载项,基本只在必要的时候使用,例如net命令什么的…当然cmd好像也能跑这些,而且貌似还更快。

2. 配置

2.1. 效果

官方文档已经给了不少主题,我印象貌似安装之后自带的就有很多,具体参照这个页面5,找到合适的直接更改启动命令,或者是json文件。

啊对了有必要说一句,因为我这里是手动更新的,所以主题的json文件一定要放在安装位置之外…要不然一更新文件就会被覆盖,然后主题就无了。问就是体验过,我这里就是在其他地方单独建了个文件夹。

当然了,可能逛了一圈发现没啥自己喜欢的,那也可以根据文档自己搭,或者是基于某个主题魔改一下,这都需要先读一下主题组件的相关说明,大概是这里6

说明文档6里面什么乱七八遭的组件都有,比如说电池电量、充电状态、内存占用,反正花里胡哨的,自己看着搭吧,我是以简洁为主,只保留自己需要的东西,其余的全给删了

我也魔改了一个自己的版本,效果如下:


我的配置文档如下:

{
  "$schema": "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json",
  "blocks": [
    {
      "alignment": "left",
      "segments": [
        {
          "background": "#ff479c",
          "foreground": "#ffffff",
          "properties": {
            "folder_separator_icon": " \ue0b1 ",
            "home_icon": "~",
            "style": "folder"
          },
          "style": "powerline",
          "template": "<transparent>\ue0b0</> \uea83  {{ .Path }} ",
          "type": "path"
        },
        {
          "background": "#fffb38",
          "background_templates": [
            "{{ if or (.Working.Changed) (.Staging.Changed) }}#FF9248{{ end }}",
            "{{ if and (gt .Ahead 0) (gt .Behind 0) }}#ff4500{{ end }}",
            "{{ if gt .Ahead 0 }}#B388FF{{ end }}",
            "{{ if gt .Behind 0 }}#B388FF{{ end }}"
          ],
          "foreground": "#193549",
          "leading_diamond": "\ue0b6",
          "properties": {
            "branch_max_length": 25,
            "fetch_stash_count": true,
            "fetch_status": true,
            "fetch_upstream_icon": true
          },
          "style": "powerline",
          "template": " {{ .UpstreamIcon }}{{ .HEAD }}{{if .BranchStatus }} {{ .BranchStatus }}{{ end }}{{ if .Working.Changed }} \uf044 {{ .Working.String }}{{ end }}{{ if and (.Working.Changed) (.Staging.Changed) }} |{{ end }}{{ if .Staging.Changed }} \uf046 {{ .Staging.String }}{{ end }}{{ if gt .StashCount 0 }} \ueb4b {{ .StashCount }}{{ end }} ",
          "trailing_diamond": "\ue0b4",
          "type": "git"
        },
        {
          "background": "#6CA35E",
          "foreground": "#ffffff",
          "properties": {
            "fetch_version": true
          },
          "style": "powerline",
          "template": " \ue718 {{ if .PackageManagerIcon }}{{ .PackageManagerIcon }} {{ end }}{{ .Full }} ",
          "type": "node"
        },
        {
          "background": "#8ED1F7",
          "foreground": "#111111",
          "properties": {
            "fetch_version": true
          },
          "style": "powerline",
          "template": " \ue626 {{ if .Error }}{{ .Error }}{{ else }}{{ .Full }}{{ end }} ",
          "type": "go"
        },
        {
          "background": "#FFDE57",
          "foreground": "#111111",
          "properties": {
            "display_virtual_env": true,
            "display_mode": "environment",
            "home_enabled": true
          },
          "style": "powerline",
          "template": "<parentBackground>\ue0b0</> \ue235 {{ if .Error }}{{ .Error }}{{ else }}{{ if .Venv }} {{ .Venv }} {{ .Full }}{{ end }}{{ end }} ",
          "type": "python"
        },
        {
          "background": "#83769c",
          "foreground": "#ffffff",
          "properties": {
            "always_enabled": true
          },
          "style": "plain",
          "template": "<parentBackground>\ue0b0</> \ueba2 {{ .FormattedMs }}\u2800",
          "type": "executiontime"
        },
        {
          "background": "#00897b",
          "background_templates": [
            "{{ if gt .Code 0 }}#e91e63{{ end }}"
          ],
          "foreground": "#ffffff",
          "properties": {
            "always_enabled": true
          },
          "style": "diamond",
          "template": "<parentBackground>\ue0b0</> \ue23a ",
          "trailing_diamond": "\ue0b4",
          "type": "status"
        }
      ],
      "type": "prompt"
    },
    {
      "alignment": "right",
      "segments": [
        {
          "background": "#2e9599",
          "foreground": "#111111",
          "invert_powerline": true,
          "leading_diamond": "\ue0b6",
          "style": "diamond",
          "properties": {
            "time_format": "2006-01-02 15:04:05"
          },
          "template": " {{ .CurrentDate | date .Format }} ",
          "trailing_diamond": "\ue0b4",
          "type": "time"
        }
      ],
      "type": "prompt"
    },
    {
      "alignment": "left",
      "newline": true,
      "segments": [
        {
          "foreground": "#CD4277",
          "style": "plain",
          "template": "\uf071 ",
          "type": "root"
        },
        {
          "foreground": "#45F1C2",
          "style": "plain",
          "template": "{{ if .SSHSession }}{{ if .Root }}<#CD4277>\uF0E7</> {{ end }}\ueb39 {{ .UserName }}{{ else }}\uf522 Zheng{{ end }}",
          "type": "session"
        }
      ],
      "type": "prompt"
    }
  ],
  "console_title_template": "{{ .Shell }} in {{ .Folder }}",
  "final_space": true,
  "version": 2
}

2.2. 说明

反正一堆乱七八遭的东西,我还是简要说一下我改的过程吧

就是这个主题,单行大概分为左右两个部分,就是左对齐和右对齐

左对齐的基本部分,按照截图第一行,从左到右依次有:当前所在目录或者路径,上一条命令的运行时间,上一条命令的运行状态。运行状态就是最后的那个像是松果一样的绿色的图标,如果上一条命令运行出错,这个图标会变红。还有就是要说一下第一个图标,最早我设置的是显示完整路径,然后去到一些比较深层的地方后,路径过长,直接换行了,然后就导致排版有些错乱,最后我选择了只显示目录,因为这样最短。

然后继续说左对齐这部分,第二行,可以看到激活conda后,出现了环境名称和python版本,这个也是我改的。在主题模板当中,环境名称是个变量,python版本也是个变量。激活环境后,我把他俩同时显示出来了。这个还有其他的改法,比如说如果当前路径下有.py文件,它也可以自动就显示这个python组件,显示python版本什么的,具体可以参照这一节7。这里还可以扩展很多乱七八遭的东西,比如其他语言的版本什么的。

接下来说一下第二行,这是我放输入光标的位置,也有其他的主题把光标放在第一行。这一行的最前面是个小太阳的图标,这就是字体里面带的那些花里胡哨的字符,具体可以在这里找找。就是只能输入英文找,我最早输的什么smile啊、rocket啊,后来发现不太喜欢,但又想不到其他的,然后我就输了单个字母,随便输个f,看看相关的所有图标。这个其实也是会变的,就是如果是管理员模式,对应linuxroot,小太阳就会变成一道闪电;如果是远程连接ssh,图标会变成那个经典的显示器。总之,参考文档乱改吧

当然,这里有些问题就是,这个小太阳看上去有点小啊。一开始不是这样的,一开始还挺大的,包括第一行的文件夹图标什么的,后来Windows Terminal更新了一次,应该是更改了字体渲染相关的部分,然后图标就变小了,后面又更新了几次,也没恢复,图标还是很小。我看Oh My Posh是有人提相关Issue8的,但很可惜回复说这是终端软件对字体的渲染问题,oh-my-posh对此暂时束手无策。贴一下原文:

@aaronecgberht 😅 Unfortunately, you cannot tweak it via OMP because that’s something about how your terminal app renders a Nerd Font. The only thing you can do is to use other icon characters in your theme config. It is easy to test which icons are rendered consistent in size on your end. Possibly helpful reference: Cheat Sheet for Nerd Font.

2.3. 其他

2.3.1. 新版PowerShell

貌似win10自带的是5.+版本,反正看上去似乎不太好用,后来又出了7.+版,建议通过微软应用商店安装,因为这样可以自动更新。

新版自带了一个命令补全的模块,PSReadline,我之前试装过,还挺有意思的。奈何基本不用PowerShell敲命令,所以对我而言没啥意义。

后来就卸掉了新版,因为确实不太常用,还占地方。

2.3.2 conda问题

我之前配置好oh-my-posh之后,conda死活都出不来。切换到没有美化的PowerShell,发现每一行前面的加括号的环境名称也没有了。我一开始还以为是曾经禁止过显示这个,后来发现并不是,而是莫名其妙地丢了conda的初始化。于是在Git BashPowerShell分别跑了下conda init,问题就解决了。当然也有一些其他不同操作9,只是不适用于我。

另外说一下,貌似conda初始化,就是在启动文件中加了几行代码,比如Git Bash里面似乎是这样:

# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
if [ -f '/d/Software/miniconda3/Scripts/conda.exe' ]; then
    eval "$('/d/Software/miniconda3/Scripts/conda.exe' 'shell.bash' 'hook')"
fi
# <<< conda initialize <<<

  1. 1分钟速通Win10安装Windows Terminal - 知乎 ↩︎

  2. Releases · JanDeDobbeleer/oh-my-posh ↩︎

  3. Fonts | Oh My Posh ↩︎

  4. 为 Git Bash 设置 PowerLine - 知乎 ↩︎

  5. Themes | Oh My Posh ↩︎

  6. Angular | Oh My Posh ↩︎ ↩︎

  7. Python | Oh My Posh ↩︎

  8. How do I set the size of the icon? · Issue #2445 · JanDeDobbeleer/oh-my-posh · GitHub ↩︎

  9. windows terminal中配置on-my-posh,conda虚拟环境提示不生效 - fanyfan - 博客园 ↩︎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1523692.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从MFC迁移到wxWidgets视频教程

犹他州C程序员团队发布了一个关于从MFC迁移到wxWidgets的新视频&#xff08;需要科学上网&#xff09;&#xff0c;并附带了一个包含详细步骤说明的要点。 希望这对那些希望使其现有的MFC应用程序可移植&#xff0c;或者只是希望切换到维护更活跃的框架的人来说会有所帮助。 附…

NPM 仓库的超集 JSR 来了!

引言 今天在 Deno 博客中看到了一篇文章&#xff0c;介绍了一个叫 JSR 的包管理注册中心&#xff0c;简单尝试了一下觉得还不错&#xff0c;本文将结合原文章和个人体验对 JSR 进行一个详细的介绍。 在现如今的前端开发中&#xff0c;包管理注册中心 (如 npmjs.com) 扮演着至…

2024人工智能四大趋势→

2023年&#xff0c;世人见证了ChatGPT在全球范围的大火。以生成式人工智能为代表的新一代人工智能问世&#xff0c;改变了人工智能&#xff08;AI&#xff09;技术与应用的发展轨迹&#xff0c;加速了人与AI的互动进程&#xff0c;是人工智能发展史上的新里程碑。2024年&#x…

NCV8705MTADJTCG稳压器芯片中文资料规格书PDF数据手册引脚图图片价格功能

产品概述&#xff1a; NCV8705 是一款低噪音、低功耗和低泄漏线性电压稳压器。该器件具有卓越的噪音和 PSRR 规格&#xff0c;适用于使用视频接收器、成像传感器、音频处理器或需要外部洁净电源的任何部件的产品。NCV8705 使用创新的自适应接地电流电路 可确保轻负载调节下的超…

2024.4.17周报

目录 摘要 Abstract 文献阅读&#xff1a;耦合时间和非时间序列模型模拟城市洪涝区洪水深度 现有问题 提出方法 创新点 XGBoost和LSTM耦合模型 XGBoost算法 ​编辑 LSTM&#xff08;长短期记忆网络&#xff09; 耦合模型 研究实验 数据集 评估指标 研究目的 洪水…

计算机操作系统(四)

存储器管理 计算机的存储层次至少有三层&#xff0c;分别是寄存器、内存、外存。还可以根据具体功能划分为寄存器、高速缓存、内存、磁盘缓存、固定磁盘、可移动存储。 其中&#xff0c;寄存器、高速缓存、内存和磁盘缓存均属于操作系统存储管理的管辖范畴,断电后信息不再存在…

“AI巨浪:ChatGPT等大模型重塑科研与创新的未来!“

AI大模型引领未来智慧科研暨ChatGPT在地学、GIS、气象、农业、生态、环境等领域中的应用 以ChatGPT、LLaMA、Gemini、DALLE、Midjourney、Stable Diffusion、星火大模型、文心一言、千问为代表AI大语言模型带来了新一波人工智能浪潮&#xff0c;可以面向科研选题、思维导图、数…

第十三篇:复习Java面向对象

文章目录 一、面向对象的概念二、类和对象1. 如何定义/使用类2. 定义类的补充注意事项 三、面向对象三大特征1. 封装2. 继承2.1 例子2.2 继承类型2.3 继承的特性2.4 继承中的关键字2.4.1 extend2.4.2 implements2.4.3 super/this2.4.4 final 3. 多态4. 抽象类4.1 抽象类4.2 抽象…

Epuck2机器人固件更新及IP查询

文章目录 前言一、下载固件更新软件包&#xff1a;二、查询机器人在局域网下的IP 前言 前面进行了多机器人编队仿真包括集中式和分布式&#xff0c;最近打算在实物机器人上跑一跑之前的编队算法。但由于Epuck2机器人长时间没使用&#xff0c;故对其进行固件的更新&#xff0c;…

B端能用就行,颜值无所谓?你现在还敢说吗,马上轮到工业HMI

在当前的商业环境下&#xff0c;用户体验和界面设计的重要性越来越受到重视&#xff0c;即使是B端用户也希望能够使用界面美观、易于操作的工业HMI系统。 漂亮的设计不仅可以提高用户的工作效率和满意度&#xff0c;还可以提升产品的竞争力和市场份额。因此&#xff0c;即使是…

Linux - 多线程

1、Linux线程概念 1.1、什么是线程 在一个程序里的一个执行路线就叫做线程&#xff08;thread&#xff09;。更准确的定义是&#xff1a;线程是 “一个进程内部的控制序列”一切进程至少都有一个执行线程&#xff1b;线程在进程内部运行&#xff0c;本质是在进程地址空间内运…

『scrapy爬虫』05. 使用管道将数据写入mysql(详细注释步骤)

目录 1. 新建管道类,并启用2. 准备好mysql数据库新建表3. 实现管道写入数据库的代码测试一下 总结 欢迎关注 『scrapy爬虫』 专栏&#xff0c;持续更新中 欢迎关注 『scrapy爬虫』 专栏&#xff0c;持续更新中 如果对mysql和python不熟悉可看专栏【Python之pymysql库学习】 1.…

202206 CSP认证 | 角色授权

角色授权 fine&#xff0c;又是一道acwing上TLE但是平台通过了的&#xff0c;那就酱吧… 直接跟着题目来模拟的…先找到每个用户授予的所有角色&#xff0c;包括用户本身和它所属的用户组。 然后遍历这个角色集合&#xff0c;看是否有操作权限&#xff0c;种类权限以及资源名称…

uniapp样式穿透修改uview的按钮button图标

需求&#xff1a; 想给按钮icon和text改字体颜色&#xff0c;结果发现图标颜色并没有改变 .u-button{width: 300rpx;background-color: aliceblue;color: #aaaa7f;margin-top: 20rpx; }接下来用样式穿透解决 1、首先&#xff0c;给UI组件包裹一层view <view class"t…

【Algorithms 4】算法(第4版)学习笔记 19 - 6.0.4 网络流算法

文章目录 前言参考目录学习笔记1&#xff1a;介绍1.1&#xff1a;最小切分问题1.2&#xff1a;最大流问题1.3&#xff1a;小结2&#xff1a;Ford-Fulkerson 算法&#xff08;FF 算法&#xff09;2.1&#xff1a;介绍2.2&#xff1a;问题3&#xff1a;最大流量 - 最小切分定理 m…

QT----基于QT的人脸考勤系统

目录 1 编译opencv库1.1 下载源代码1.2 qt编译opencv1.3 执行Cmake一直卡着data: Download: face_landmark_model.dat 2 编译SeetaFace2代码2.1 遇到报错By not providing "FindOpenCV.cmake" in CMAKE_MODULE_PATH this project has2.2遇到报错Model missing 3 测试…

python爬虫-AES.CBS加密案例(mmz批量爬取)

下载mmz本页数据 批量下载请看主页&#xff01;&#xff01;&#xff01; 代码&#xff1a; import requests from Crypto.Cipher import AES import base64cookies {PHPSESSID: 48nu182kdlsmgfo2g7hl6eufsa,Hm_lvt_6cd598ca665714ffcd8aca3aafc5e0dc: 1710568549,SECKEY_A…

唯一约束

Oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645 唯一约束 唯一约束的特点是在某一个列上的内容不允许出现重复。 例如&#xff0c;现在要收集用户的信息&#xff0c;假设包含编号&#xff08;mid&#xff09;、姓名&…

SpringBoot(文件上传功能,阿里云OSS存储,几种配置文件用法)【详解】

目录 一、新增员工 二、文件上传-技术点 1. 文件上传功能 1.客户端上传文件三要素 2 服务端接收文件 Controller接收文件示例 修改允许上传的文件大小 2. 本地存储文件 3. 阿里云OSS存储&#xff08;这里只写一种&#xff0c;可以用其它的&#xff09; 1.介绍 2.开通…

第 126 场 LeetCode 双周赛题解

A 求出加密整数的和 模拟 class Solution { public:int sumOfEncryptedInt(vector<int> &nums) {int res 0;for (auto x: nums) {string s to_string(x);char ch *max_element(s.begin(), s.end());for (auto &c: s)c ch;res stoi(s);}return res;} };B 执行…